如何修复“未定义引用”编译器错误

时间:2010-12-28 07:48:44

标签: c++ oop

在以下代码中找到错误:

class A
{
   public:
    static int i;
    void print()
    {
      cout<< i << endl ;
    }
 };

 int main()
 {
    A a;
    a.print();
  }

我运行上面的代码,我得到“对'A :: i'的未定义引用”。为什么我收到此错误?

2 个答案:

答案 0 :(得分:12)

由于A::istatic成员,因此必须为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> 在类外定义它}}