2

静的メンバーを持つこのクラスがあります。これは、私のプログラムの他のいくつかのクラスの基本クラスでもあります。そのヘッダーファイルは次のとおりです。

#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++ を使用していますが、3 つのundefined reference to 'yarlObject::YarlObject::nextIDリンカー エラーが返されます。コンストラクターの++nextIDフレーズを justnextIDに変更すると、エラーが 1 つだけ発生し、それを に変更すると1、正しくリンクされます。簡単なことだと思いますが、どうなんでしょう?

4

1 に答える 1

1

生成された .o ファイルに対してリンクしていることを確認してください。メイクファイルを再確認してください。

于 2010-05-26T21:17:31.577 に答える