У меня есть синглтон-класс.
В А.ч
class single
{
public:
static single *Instance;
static single* getInstance()
{ if(!Instance) Instance = new single;
return Instance;
}
void hello () { cout<<"Hello"; }
private: single(){ }
}
В A.cpp
single *single::Instance = 0;
std::auto_ptr <single> SINGLE_OBJ (single::getInstance());
В B.cpp
#include "A.h"
SINGLE_OBJ->hello();
Я получаю следующую ошибку:
SINGLE_OBJ не был объявлен в этой области.
Делать SINGLE_OBJ
видимый в B.cpp
Вы должны заявить об этом в A.h.
т.е.
extern std::auto_ptr <single> SINGLE_OBJ;
Кроме того, почему вы используете std::auto_ptr
, это устарело — вы должны переключиться на std::unique_ptr
,
Других решений пока нет …