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

siv*_*iva 4 c++ oop

在以下代码中找到错误:

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

 int main()
 {
    A a;
    a.print();
  }
Run Code Online (Sandbox Code Playgroud)

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

Fré*_*idi 12

既然A::i是一个static成员,它必须在类之外定义:

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.
Run Code Online (Sandbox Code Playgroud)


Nav*_*een 7

在static int i中class A只是一个声明,你需要定义添加一个声明它的类外int A::i = 0;