Пытаюсь разобраться со следующей задачей: необходимо создать всего лишь один экземпляр класса, при создании передать параметр (текстовую строку — путь к имени файла), а затем иметь возможность как-то к этой строке получить доступ. Вот что имею:
class SettingInterface {
public:
static SettingInterface& getInstance(QString const& filename) {
static SettingInterface instance;
static QString config = filename;
qDebug() << "Using: " << config;
return instance;
}
private:
// Следующие 3 конструктора _не перегружать_ (singleton)
SettingInterface();
SettingInterface(SettingInterface const&);
void operator=(SettingInterface const&);
};
Затем в другом классе, каждый раз при вызове SettingInterface(«config.ini») у меня будет выводиться именно config.ini (даже если в след. раз кто-то попробует вызвать его с другим именем).
Вопрос в том, что мне нужно как-то получить доступ к этому config. Попытался добавить еще одно static поле данных, и добавить в getInstance копирование config в это поле, но тогда ругается линковщик:
Как-то так:
class SettingInterface {
public:
static SettingInterface& getInstance(QString const& filename) {
static SettingInterface instance;
static QString config = filename;
SettingInterface::config1 = config;
qDebug() << "Using: " << config;
return instance;
}
private:
// Следующие 3 конструктора _не перегружать_ (singleton)
SettingInterface();
SettingInterface(SettingInterface const&);
void operator=(SettingInterface const&);
static QString config1;
};
error: undefined reference to `SettingInterface::config1'