未定义的静态成员变量引用

时间:2010-05-26 20:58:53

标签: c++ static-members

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

#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,则会正确链接。我想这很简单,但是发生了什么?

1 个答案:

答案 0 :(得分:1)

确保链接生成的.o文件。仔细检查makefile。