Я получаю некоторые ошибки, когда пытаюсь поместить объявление и определение класса в отдельные файлы hpp и cpp.не могли бы вы помочь мне исправить это, пожалуйста.Я пытаюсь манипулировать синглтоном следующим образом:
sing.hpp:
class GlobalClass {
int m_value;
static GlobalClass *s_instance;
GlobalClass(int);
public:
int get_value();
void set_value(int v);
static GlobalClass *instance(); };
sing.cpp:
#include"sing.hpp"
GlobalClass::GlobalClass(int v = 0)
{
this->m_value = v;
}
int GlobalClass::get_value()
{
return this->m_value;
}
void GlobalClass::set_value(int v)
{
this->m_value = v;
}
static GlobalClass GlobalClass::*instance()
{
if (!s_instance)
s_instance = new GlobalClass;
return s_instance;
}
main.cpp:
#include "sing.hpp"
int main()
{
GlobalClass *s=0;
}
команда и ошибки:
~/workspace/singleton$ g++ main.cpp sing.cpp
sing.cpp: In function ‘GlobalClass GlobalClass::* instance()’:
sing.cpp:19:10: error: ‘s_instance’ was not declared in this scope
sing.cpp:2:1: error: ‘GlobalClass::GlobalClass(int)’ is private
sing.cpp:20:23: error: within this context
sing.cpp:21:12: error: ‘s_instance’ was not declared in this scope