int MyClass::m = 100;
int _tmain(int argc, _TCHAR* argv[])
{
//int MyClass::m = 100;若声明再这里就报链接错误??
cout<<MyClass::m<<endl;
int m;
}
如代码所示,为什么把那个静态成员声明在main函数里面就出错呢?一般的静态变量不都没问题的吗?
...全文
766打赏收藏
关于静态成员变量的问题
class MyClass { public: static int m; }; int MyClass::m = 100; int _tmain(int argc, _TCHAR* argv[]) { //int MyClass::m = 100;若声明再这里就报链接错误?? cout<<MyClass::m<<endl; int m; } 如代码所示,为什么把那个静态成员声明在main函数里面就出错呢?一般的静态变量不都没问题的吗?
[Quote=引用 2 楼 goonyangxiaofang 的回复:]
如果在 main 外定义一个 MyClass 的对象,并修改了 m
当进入 main 是你在初始化 m,前面修改的 m 就无效了
[/Quote]
额,我没说清楚我的问题,我的问题是:我把 int MyClass::m = 100;这句语句加在main外,程序没问题,但是把它放在main之内,就链接错误了,说m是unresolved external symbol,我就想知道为什么一定得声明在main外面?