c++ - 对静态成员变量的 undefined reference

标签 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 ,然后它会正确链接。我想这很简单,但这是怎么回事?

最佳答案

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

关于c++ - 对静态成员变量的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2916759/

相关文章:

c++ - CreateMutex 和 OpenMutex 返回 NULL

c++ - 在 C++ 中共享键值对的最佳方式

c++ - 继承和存储静态类信息

c++ - 单例实例作为静态字段与 getInstance() 方法中的静态变量

java - 如何解决这个静态字段名称冲突?

java - 为什么Java和C#不允许在栈上创建对象?

android - Cocos2d-x 3.13.1 : error with cocos run (Android)

c++ - 如何实例化对象的静态 vector ?

c++ - 如何提高此代码使用模拟退火概念对数字进行排序的效率?

java - 在运行时将数据保存在服务器中的首选方法是什么