1

如何更正它,以便我可以显示静态 int

cout<<A::a<<endl;

像下面的例子一样?

#include <iostream>
using namespace std;
class A{
    public:
        static int a = 0;
};

int main()
{
    cout << A::a << endl;
    return 0;
}
4

2 回答 2

5

任何一个:

class A{
    public:
        static const int a = 0;
};

(常量整数类型可以在类定义中初始化)

或者

class A{
    public:
        static int a;
};

int A::a = 0;
于 2012-10-12T14:57:57.753 回答
5

在类定义中,静态成员只被声明而不被定义。默认情况下,只有定义具有初始化,但对于整型的静态常量,声明可以具有初始化。

您的程序中的问题是使用了静态成员(对于非常量静态成员属性std::cout << A::aodr-use ),但是您没有定义。您需要通过添加以下内容在程序的单个翻译单元中定义变量:

int A::a = value;

(请注意,由于静态成员不是const,因此您不能在类定义中提供初始化程序,因此您需要= 0从类定义中的声明中删除 。还要注意,您可以跳过= value初始化中的 if value == 0,因为静态初始化会A::a在任何其他初始化之前设置为 0)

于 2012-10-12T15:03:03.137 回答