我有一个具有静态成员的此类。它也是我程序中其他几个类的基类。这是它的头文件:

#ifndef YARL_OBJECT_HPP
#define YARL_OBJECT_HPP

namespace yarlObject
{
    class YarlObject
    {
    // Member Variables
        private:
            static int nextID; // keeps track of the next ID number to be used
            int ID; // the identifier for a specific object

    // Member Functions
        public:
            YarlObject(): ID(++nextID) {}
            virtual ~YarlObject() {}

            int getID() const {return ID;}

    };
}

#endif

这是其实现文件。
#include "YarlObject.hpp"

namespace yarlObject
{
    int YarlObject::nextID = 0;
}

我正在使用g++,它返回三个undefined reference to 'yarlObject::YarlObject::nextID链接器错误。如果将构造函数中的++nextID短语更改为nextID,则只会收到一个错误;如果将其更改为1,则它可以正确链接。我想这很简单,但是怎么回事?

最佳答案

确保您针对生成的.o文件进行链接。仔细检查makefile。

09-15 15:07