crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Глобальные переменные., Как ???
potkin
  опции профиля:
сообщение 11.8.2010, 14:15
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 18.6.2010
Пользователь №: 1819

Спасибо сказали: 0 раз(а)




Репутация:   0  


Хочу хранить глоб.переменные в отдельном класе и обращатся к ним из других классов.
Создаю класс: "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


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

Сообщение отредактировал potkin - 11.8.2010, 14:17
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 11.8.2010, 14:29
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


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

QString VarClass::var1;

VarClass::VarClass()
{
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.8.2010, 14:44
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(potkin @ 11.8.2010, 18:15) *
Получаю ошибку:
:: error: collect2: ld returned 1 exit status
ты не резюме ошибки показывай, а саму ошибку
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 11.8.2010, 15:02
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 18.6.2010
Пользователь №: 1819

Спасибо сказали: 0 раз(а)




Репутация:   0  


BRE,
Спасибо !!!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 11.8.2010, 16:53
Сообщение #5


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Любого гемора со статическим объектом-членом класса можно избежать, сделав статическую же функцию, где локально объявить статическую(инициализировав через конструктор) переменную:
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();
}


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

Сообщение отредактировал Алексей1153 - 11.8.2010, 17:03
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.11.2024, 19:16