静的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;
}
クラス定義内では、静的メンバーは宣言されているだけで、定義されていません。デフォルトでは、定義のみが初期化されます。ただし、整数型の静的定数の場合、宣言は初期化を持つことができます。
プログラムの問題は、静的メンバーが使用されていることです(std::cout << A::a
odr-非const静的メンバー属性に使用されます)が、定義がありません。次を追加して、プログラムの単一の変換単位で変数を定義する必要があります。
int A::a = value;
(静的メンバーはconstではないため、クラス定義内に初期化子を指定できないため、クラス定義の宣言からを削除する必要があることに注意してください。静的初期化の場合は、初期化で= 0
をスキップできることにも注意してください。他の初期化の前に0に設定)= value
value == 0
A::a
また:
class A{
public:
static const int a = 0;
};
(const整数型はクラス定義内で初期化できます)
また
class A{
public:
static int a;
};
int A::a = 0;