c++ - 静态类成员的初始化

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

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

关于c++ - 静态类成员的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5359718/

相关文章:

c++ - c++双向链表的相反元素的成对乘法

c++ - 从 MFC 表单应用程序调用 Web 服务器

c++ - 之后填充 std::unique_ptr

c++ - 如何在 C++ 中使用 "%"运算符?

c++ - 函数有损坏的返回值

c++11 type_traits : different result in INTEL 2013 and GCC 4. 7.2

c++ - static, constexpr, const - 它们一起使用时是什么意思?

c++ - 对静态变量的 undefined reference

c++ - 每次你经过它时循环都会重置吗?

c++ - 我该怎么办这个奇怪的错误?