首先,我可能应该让您知道我绝不是程序员,而我只是在做家庭作业,所以如果可能的话,我将需要非常详细的解释:)

我目前有一个Node类,用于存储点的坐标。除此之外,我想用它为每个不同的Node对象分配一个基于计数器的索引号。从我收集的互联网信息来看,我的方法是使用另一个类在构造函数中初始化我的计数器,并在Node类内部将其添加为静态参数。

这是我上面的代码:

class counter
{
  public:
    int nr;
    counter()
    {
        nr = 0;
    }
};

class Nod
{
  static counter ctr;

  public:
     int index;
     Punct pct;
     Nod(Punct &temp)
     {
         pct = temp;
         index = ctr.nr ++ ;
     }
     Nod() {}
};

现在,这样就可以了,但是,一旦我尝试在主函数中声明一个Nod对象,我就会收到以下错误:致命错误LNK1120:1个未解决的外部问题,我绝对不知道这是为什么。我以前在尝试编写自己的析构函数时遇到了此错误,但是我只是删除了一部分代码就解决了这个问题。

谢谢,如果我对某些事情使用了错误的术语,对不起。

最佳答案

静态数据成员在类中声明,但必须在一个转换单元(= .cpp文件)中定义。将以下内容放入一个.cpp文件(最好是Nod.cpp)中:

counter Nod::ctr;

顺便说一句,您可能只使用了int而不是自定义类counter

09-11 19:52