我目前正在尝试将工厂实现为单例。我实际上使用了单例模式的教科书示例。这是 .h 文件:
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:对“oxygen::ImpFactory::mInstance”的未定义引用
这一下子就让三名同学难住了。有任何想法吗?
你必须define静态实例,而不仅仅是声明它。该定义创建您引用的实际对象。
In your cpp
文件,添加行:
boost::shared_ptr<ImpFactory> ImpFactory::mInstance;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)