У меня есть одноэлементный класс.multi file access to singleton class
В хиджры
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 не был объявлен в этой области.
Почему бы вам не использовать единый :: GetInstance() -> привет(); в B.cpp? – Rabbid76
Почему память экземпляра управляется извне через 'auto_ptr'? Тот факт, что он выделяется с помощью 'new', является деталью реализации. Он должен быть внутренним для 'single' для инкапсуляции и для обеспечения очистки памяти, даже если пользователь не поместил указатель в' auto_ptr'. Кстати, C++ 11 заменяет устаревший шаблон класса std :: auto_ptr' на 'std :: unique_ptr'. – TheOperator