J'essaie actuellement d'implémenter une fabrique en tant que singleton. J'ai pratiquement utilisé l'exemple du modèle Singleton. Voici le fichier .h:C++: Référence non définie à l'instance dans la classe Singleton
namespace oxygen{
class ImpFactory{
public:
static boost::shared_ptr<ImpFactory> GetInstance();
private:
static boost::shared_ptr<ImpFactory> mInstance;
};
et voici le fichier .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;
}
Le code compile, mais je reçois une erreur de liaison:
../../lib/oxygen/liboxygen.so.3.2.4: undefined reference to `oxygen::ImpFactory::mInstance'
Ce compte actuellement trois étudiants perplexe. Des idées?
Je pense que ce n'est pas tellement "déplacé" que "ajouté quand quelqu'un pensait qu'il voulait un singleton, puis retiré quand ils ont réalisé que ce n'était pas une bonne idée après tout". –