【问题标题】:Initialization of Static Class members静态类成员的初始化
【发布时间】:2011-07-18 14:22:50
【问题描述】:

如果我尝试初始化 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' 

【问题讨论】:

    标签: c++ visual-c++ c++11


    【解决方案1】:

    [已解决]

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

    #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;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-05-18
      • 2023-03-18
      • 2013-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      相关资源
      最近更新 更多