在以下代码中找到错误:
class A
{
public:
static int i;
void print()
{
cout<< i << endl ;
}
};
int main()
{
A a;
a.print();
}
我运行上面的代码,我得到“对'A :: i'的未定义引用”。为什么我收到此错误?
答案 0 :(得分:12)
由于A::i
是static
成员,因此必须为defined outside of the class:
using namespace std;
class A
{
public:
static int i; // A::i is declared here.
void print()
{
cout << i << endl;
}
};
int A::i = 42; // A::i is defined here.
答案 1 :(得分:7)
static int i
中的class A
只是声明,您需要通过添加语句{{1> 在类外定义它}}