static成员变量,不明白的错误,内详:

liuchunshanyj 2012-03-27 11:27:14
class A
{
protected:
static int m_test ;

public:
void setTest(int data);

};

void A::setTest(int data)
{
m_test = data;
}


这个时候编译有错误:
classTest.obj : error LNK2001: unresolved external symbol "public: static int A::m_test" (?m_test@A@@2HA)

是为什么? 抄的书上的一个例子,跟这是一样的错误,两天都没解决。

求助!

...全文
122 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lactoferrin 2012-03-28
  • 打赏
  • 举报
回复
里面仅仅是声明,没定义
liuchunshanyj 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pengzhixi 的回复:]
class A
{
protected:
static int m_test ;

public:
void setTest(int data);

};

int A:: m_test ;
[/Quote]

好了,,好奇怪 这是为什么?

在类里已经声明过了啊,为什么还要在类外再定义一次呢。
Song9007206710328 2012-03-28
  • 打赏
  • 举报
回复
static 变量未初始化!!
Song9007206710328 2012-03-28
  • 打赏
  • 举报
回复
STATIC数据成员未初始化
支持英文数字 2012-03-28
  • 打赏
  • 举报
回复
static数据成员必须在类定义体外部定义(正好一次)。不像普通数据成员, static成员不是通过类构造函数进行初始化,而是应该在定义时进行初始化。
liuxingguodu 2012-03-28
  • 打赏
  • 举报
回复
必须在类外进行定义!
wintree 2012-03-28
  • 打赏
  • 举报
回复
static变量是静态的。在类外边就可以赋值。int A:: m_test ;
Spy 2012-03-28
  • 打赏
  • 举报
回复
书上有很多都是伪代码来的,然后声明和定义又不是一回事的
mosal 2012-03-27
  • 打赏
  • 举报
回复
static没定义 怎么就能用来赋值呢?所谓定义就是一个分配内存的过程 如楼上的代码
Lactoferrin 2012-03-27
  • 打赏
  • 举报
回复
int A::m_test(0);
pengzhixi 2012-03-27
  • 打赏
  • 举报
回复
class A
{
protected:
static int m_test ;

public:
void setTest(int data);

};

int A:: m_test ;

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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