1
#include <iostream>
using namespace std;

class Assn2
{
  public:
     static void set_numberofshape();
     static void increase_numberofshape();

  private:         
      static int numberofshape22;
};

void Assn2::increase_numberofshape()
{
  numberofshape22++;
}

void Assn2::set_numberofshape()
{
  numberofshape22=0;
} // there is a problem with my static function declaration

int main()
{
  Assn2::set_numberofshape();
}

为什么undefined reference to Assn2::numberofshape22编译时会出错?

我正在尝试声明一个静态整数:numberofshape22 和两种方法。

方法 1 将 numberofshapes22 增加 1

方法2将numberofshape22初始化为0

我究竟做错了什么 ??

4

2 回答 2

4

您刚刚声明了变量。你需要定义它:

int Assn2::numberofshape22;
于 2013-10-20T14:44:20.103 回答
2

在类的成员列表中声明静态数据成员不是定义。

要遵守一个定义规则,您必须定义一个static数据成员。在您的情况下,您只声明了它。

例子:

// in assn2.h
class Assn2
{
  // ...
  private:         
      static int numberofshape22; // declaration
};

// in assn2.cpp

int Assn2::numberofshape22; // Definition
于 2013-10-20T14:50:07.803 回答