我目前正在試圖將一個工廠實現爲一個單例。我實際上使用了Singleton模式的教科書示例。這裏的.h文件:C++:在Singleton類中未定義對實例的引用
namespace oxygen{
class ImpFactory{
public:
static boost::shared_ptr<ImpFactory> GetInstance();
private:
static boost::shared_ptr<ImpFactory> mInstance;
};
和這裏的.cpp文件:
#include "impfactory.h"
using namespace oxygen;
using namespace boost;
shared_ptr<ImpFactory> ImpFactory::GetInstance(){
if (mInstance.get() == 0)
mInstance = shared_ptr<ImpFactory>(new ImpFactory());
return mInstance;
}
代碼編譯,但我得到一個鏈接錯誤:
../../lib/oxygen/liboxygen.so.3.2.4: undefined reference to `oxygen::ImpFactory::mInstance'
這個目前有三個學生難倒。有任何想法嗎?
我覺得它沒有那麼多的「感動」,因爲「有人認爲他們想要一個單身人士時增加了,然後當他們意識到這畢竟不是一個好主意時就被刪除了」。 – 2010-01-27 16:23:11