我目前正在试图将一个工厂实现为一个单例。我实际上使用了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