Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ Глобальные переменные.

Автор: potkin 11.8.2010, 14:15

Хочу хранить глоб.переменные в отдельном класе и обращатся к ним из других классов.
Создаю класс: "varCalss"
"varCalss.h"

#ifndef VARCLASS_H
#define VARCLASS_H
#include <QMainWindow>

class VarClass
{
public:
    VarClass();
    static QString var1;
};

#endif // VARCLASS_H


"varCalss.cpp"
#include "varclass.h"

VarClass::VarClass()
{
    QString var1;
}


Ну и меняю где-то эту переменную "var1"
VarClass::var1 = "TEXT";


Получаю ошибку:
:: error: collect2: ld returned 1 exit status


Подскажите, что не так ???

Автор: BRE 11.8.2010, 14:29

"varCalss.cpp"

#include "varclass.h"

QString VarClass::var1;

VarClass::VarClass()
{
}


Автор: Litkevich Yuriy 11.8.2010, 14:44

Цитата(potkin @ 11.8.2010, 18:15) *
Получаю ошибку:
:: error: collect2: ld returned 1 exit status
ты не резюме ошибки показывай, а саму ошибку

Автор: potkin 11.8.2010, 15:02

BRE,
Спасибо !!!

Автор: Алексей1153 11.8.2010, 16:53

Любого гемора со статическим объектом-членом класса можно избежать, сделав статическую же функцию, где локально объявить статическую(инициализировав через конструктор) переменную:

class VarClass
{
public:
   static QString& var1()
   {
        static QString s("текст по умолчанию1");
        return s;
   }

   static QString& var2()
   {
        static QString s("текст по умолчанию2");
        return s;
   }
};


void main()
{
    VarClass::var1()="111";
    VarClass::var2()=VarClass::var1();
}


В таком случае даже будет удобно делать межпотоковую синхронизацию, если это понадобится

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)