繁体   English   中英

静态类成员的初始化

[英]Initialization of Static Class members

如果我尝试初始化obj_s要求我先让它const -我不能做到这一点,因为我必须保持我的创建对象的数量。

#include<iostream>

class A
{
        static int obj_s=0;
public: 
        A(){ ++obj_s;cout << A::obj_s << "\nObject(s) Created\n"; }
}; 

int main()
{
A a,b,c,d;
}    

下面的代码不断给我以下错误:

  [Linker error] undefined reference to `A::obj_s' 

[解决了]

代码出现错误是因为在第二种情况下没有创建对象,而在第一种情况下没有初始化对象,这是应该的方式-这是固定的代码:

#include<iostream>
class A
{
        static int obj_s;
public: 
        A()
{  obj_s++;  std::cout << A::obj_s << "\nObject(s) Created\n" ;  }
}; 

int A::obj_s=0;  // This is how you intialize it

int main()
{
A a ,b,c,d;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM