Actualmente estoy intentando implementar una fábrica como singleton. Prácticamente utilicé el ejemplo del libro de texto del patrón Singleton. Aquí está el archivo .h:C++: referencia no definida a la instancia en la clase Singleton
namespace oxygen{
class ImpFactory{
public:
static boost::shared_ptr<ImpFactory> GetInstance();
private:
static boost::shared_ptr<ImpFactory> mInstance;
};
y aquí está el archivo .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;
}
El código se compila, pero me da un error de vinculador:
../../lib/oxygen/liboxygen.so.3.2.4: undefined reference to `oxygen::ImpFactory::mInstance'
Esto tiene actualmente tres estudiantes perplejo. ¿Algunas ideas?
Creo que no es tanto "movido" como "agregado cuando alguien pensó que querían un singleton, luego se lo quitaron cuando se dieron cuenta de que no era una buena idea después de todo". –