一个很简单的link错误~~~急等ing

block1956815 2004-09-20 10:11:29
class base
{
public:
base(int n):m_n(n)
{
cout<<"base construct with :"<<m_n<<endl;
};
virtual ~base(){cout<<"base destruct "<<endl;}
void print(){cout<<"print :"<<m_n<<endl;}
static void printstat(){cout<<"printstat :"<<stat<<endl;}

public:
int m_n;
static int stat;
};

测试代码:
base::stat = 2;
base *pb = new base(1);
pb->print();
((base *)0)->printstat();
delete pb;
错误:
Linking...
TestFor.obj : error LNK2001: unresolved external symbol "public: static int base::stat" (?stat@base@@2HA)
Debug/TestFor.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

什么原因?? 谢谢
...全文
75 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunzhongjian 2004-09-20
  • 打赏
  • 举报
回复
感觉楼主是没有明白声明与定义的区别:
一个完速的类应当包含类的声明和定义,声明一般是放在.h之类的头文件中,它的作用就是用来告诉其它的使用者,它有些什么东西(比如成员函数,成员变量等),但也仅是告诉其它使用者他有这个东西,这个声明并没有产生真正的东西,而定义则是指定函数的行为,变量的类型.定义才会产生实体.
唉,连我自己也感觉还是没有说清楚.:(
block1956815 2004-09-20
  • 打赏
  • 举报
回复
如: snow810211(阳光) 方法 问题解决 多谢
yuanyou 2004-09-20
  • 打赏
  • 举报
回复
是在MAIN()中赋值的吗?
yuanyou 2004-09-20
  • 打赏
  • 举报
回复
你的STATIC变量是在MAIN()中定义的吗?
snow810211 2004-09-20
  • 打赏
  • 举报
回复
int base::stat = 2;
void main()
{
base *pb = new base(1);
pb->print();
((base *)0)->printstat();
delete pb;

}
snow810211 2004-09-20
  • 打赏
  • 举报
回复
这样可以吗?
把int base::stat=2;
写在主函数的前面。
block1956815 2004-09-20
  • 打赏
  • 举报
回复
不好意思 我的msdn没有和vc6.0关联 所以...
carambo 2004-09-20
  • 打赏
  • 举报
回复
这个错误在msdn上有解释,去查查吧!
block1956815 2004-09-20
  • 打赏
  • 举报
回复
up!

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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