Вы должны объявить статический член в исходном файле, а не в заголовочном файле, независимо от того, используете ли вы член статического класса или подход статического члена функции. Ваш основной подход должен работать, если функция instance () является публичным членом:
//setupconfig.h
class Setupconfig
{
public:
static Setupconfig* instance();
private:
SetupConfig();
};
//setupconfig.cpp
static Setupconfig* SetupConfig::instance()
{
static Setupconfig* _setupObj= new Setupconfig();
return _setupObj;
}
SetupConfig::SetupConfig()
{
//....
}
Возможно использование подхода к классу
//setupconfig.h
class Setupconfig
{
public:
static Setupconfig* instance();
private:
SetupConfig();
static Setupconfig* _setupObj;
};
//setupconfig.cpp
Setupconfig* Setupconfig::_setupObj = 0;
static Setupconfig* SetupConfig::instance()
{
if (_setupObj == 0) {
_setupObj = new Setupconfig;
}
return _setupObj;
}
SetupConfig::SetupConfig()
{
//....
}