многофайловый доступ к одноэлементному классу

У меня есть синглтон-класс.

В А.ч

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 не был объявлен в этой области.

0

Решение

Делать SINGLE_OBJ видимый в B.cpp Вы должны заявить об этом в A.h. т.е.

extern std::auto_ptr <single> SINGLE_OBJ;

Кроме того, почему вы используете std::auto_ptr, это устарело — вы должны переключиться на std::unique_ptr,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]