怎么样初始化静态类成员数据

xueqianxun80 2003-01-19 05:03:58
class Test{
public:
int i;
...全文
42 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xmqds 2003-01-20
  • 打赏
  • 举报
回复
所属的类名+作用域运算符+静态成员变量名
如:Test::Test a=0;
cupidvenus 2003-01-20
  • 打赏
  • 举报
回复
Test Test1::a=0;
Cuttloefish 2003-01-20
  • 打赏
  • 举报
回复
Test Test1::a(0);
如果Test有带默认参数的construct如:
Test(int j=0):i(j) {};
就可以这样写:
Test Test1::a;

注意,这两种写法都必须单独写在任何函数体之外,并且写在main()之前。
张灰太狼 2003-01-20
  • 打赏
  • 举报
回复
Test1::a=Test::Test(0);

Test::Test Test1::a(0);
你试试看!
产品老唐 2003-01-19
  • 打赏
  • 举报
回复
class Test{
public:
int i;
Test(int i)
{};
};

class Test1{
static Test a;//怎么初始化这个变量
}

Test Test1::a=0 //今天上课的时候有说过,不只对不对.
chinajiji 2003-01-19
  • 打赏
  • 举报
回复
//in Test.h
#ifndef TEST_H
#define TEST_H

class Test{
public:
int i;
Test(int i)
{};//这个";"多余的.可以不要;
};
#endif

//in test1.h
#ifndef TEST1_H
#define TEST1_H

#include "test.h"
class Test1{
static Test a;//怎么初始化这个变量
};
#endif

//in test1.cpp
#include "test.h"
#include "test1.h"
Test1::a=Test::Test(0);
//或者这样:
Test::Test Test1::a(0);
//或者这样:
Test Test1::a(0);//这里Test::可以省略,因为有include,但Test1::不能省略,因为a是Test1中的static member;
chinajiji 2003-01-19
  • 打赏
  • 举报
回复
方法一:
Test1::a=Test::Test(0);
方法二:
Test::Test Test1::a(0);
merlinran 2003-01-19
  • 打赏
  • 举报
回复
类中声明的静态变量需要在类作用域外定义,就像web_spider(骏马秋风塞北) 的代码。但注意,定义必须放在CPP文件里。也不必赋初值,除非该变量不能缺省初始化。
rushman 2003-01-19
  • 打赏
  • 举报
回复
Test Test1::a(0);
earthharp 2003-01-19
  • 打赏
  • 举报
回复
若有default ctor.会自动调用.
web_spider 2003-01-19
  • 打赏
  • 举报
回复
class Test{
public:
int i;
Test(int i)
{};
};

class Test1{
static Test a;//怎么初始化这个变量
};

Test1::a=Test(0);
xueqianxun80 2003-01-19
  • 打赏
  • 举报
回复
出错了,重新帖:

class Test{
public:
int i;
Test(int i)
{};
};

class Test1{
static Test a;//怎么初始化这个变量
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧