游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2227|回复: 4

问个问题关于类中的静态数据成员

[复制链接]

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
发表于 2007-10-19 23:52:00 | 显示全部楼层 |阅读模式
试验下  新建一个工程,有两个文件 一个cpp文件, 一个头文件

头文件里面写
------------------------------------------------
class cBase
{
public:
        static int Sta_i;
};
------------------------------------------------

cpp文件里面写
---------------------------------------------
#include<iostream.h>
#include "h.h"

void main()
{
        cBase::Sta_i = 1;
        cout<<""<<endl;
}
----------------------------------------------

编译无错.链接报错如下:
error LNK2001: 无法解析的外部符号 "public: static int cBase::Sta_i" (?Sta_i@cBase@@2HA)

为什么???

86

主题

2251

帖子

2384

积分

金牌会员

Rank: 6Rank: 6

积分
2384
QQ
发表于 2007-10-20 11:37:00 | 显示全部楼层

Re:问个问题关于类中的静态数据成员

有声明没定义~
写个h.cpp文件,内容为:
  1. // h.cpp
  2. #include "h.h"

  3. int cBase::Sta_i;
复制代码

66

主题

223

帖子

223

积分

中级会员

Rank: 3Rank: 3

积分
223
 楼主| 发表于 2007-10-20 15:45:00 | 显示全部楼层

Re:问个问题关于类中的静态数据成员

原来是这样,多谢funcman

2

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
QQ
发表于 2007-10-26 14:50:00 | 显示全部楼层

Re: 问个问题关于类中的静态数据成员

C++规定,在类中申明的static 修饰的对象,就必须要在类外定义,否则就会报错。具体原因:static 修饰的对象的属于类的(并且在类堆栈中分配一个独立的区域),当类实例化一个对象时是不能对static进行初始化的。所以必须由类自己来定义。(个人理解,不对的地方还请指出)

6

主题

65

帖子

67

积分

注册会员

Rank: 2

积分
67
发表于 2007-10-26 20:30:00 | 显示全部楼层

Re:问个问题关于类中的静态数据成员

楼上讲得很好。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-19 21:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表