关于继承中static的问题?

gigichq 2006-04-14 11:10:58
为什么基类中声明一个static的对象(是public的),在基类中不能够取用呢?
代码如下class A
{
public:
A()
{
size = 0;
cout<<"A"<<endl;
}
virtual void A1()
{
cout<<"A1"<<endl;
}
static int size;
};

class B : public A
{
public:
void A1()
{
cout<<"B1"<<size<<endl;

}
};
编译通不过,会报test.obj : error LNK2001: unresolved external symbol "public: static int A::size" (?size@A@@2HA)这样的错误,请问这是什么原因啊?
...全文
159 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gigichq 2006-04-15
  • 打赏
  • 举报
回复
请问楼上的是不是这个意思:static的是放在堆里面的,而普通的CLASS对象是放在stack里面的啊?
chenhu_doc 2006-04-15
  • 打赏
  • 举报
回复
关于static类型的,多考虑一下内存单元的问题就可以想通了·
weilong122 2006-04-14
  • 打赏
  • 举报
回复
静态变量一定要在类的外部定义
xiaocai0001 2006-04-14
  • 打赏
  • 举报
回复
sorry, 定义的时候那个static去掉
写成
int A::size;
xiaocai0001 2006-04-14
  • 打赏
  • 举报
回复
需要在外部定义, 类中的static变量只是声明作用
还需要在class A{};之后定义
static int A::size;
KDE 2006-04-14
  • 打赏
  • 举报
回复
需要在外部加上:
int A::size = 初值;
kevlin 2006-04-14
  • 打赏
  • 举报
回复
对,静态变量在类的内部只是一个生命,还需要在外部定义一下才可以使用

64,637

社区成员

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

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