crossplatform.ru

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

> Глобальные переменные
Raks123
  опции профиля:
сообщение 22.11.2011, 16:05
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 2.10.2011
Пользователь №: 2920

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




Репутация:   0  


Вопрос такой: как правильно создать глобальную переменную, чтобы её было видно в разных cpp файлах? Знаю, что это плохая практика, но все-таки у меня по другому, даже через самую большую задницу, которую я пытался изобрести не получается(((
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Raks123
  опции профиля:
сообщение 25.11.2011, 19:56
Сообщение #2


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 2.10.2011
Пользователь №: 2920

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




Репутация:   0  


Навыдавало кучу ошибок, подскажите что не так:
Вот у меня есть global.h

#include <QMetaType>
#include <QVector>

struct MyStruct{
    QString adress;
    int port;
    bool zanyatost;
    int vremya;
    QString nameScript;
};

class Global
{

public:
static QVector<MyStruct> vector;
static int kolichestvo;

};


Тут собралось нормально, но когда я заполняю перемнную kolichestvo и вектор vector в файле openbase.cpp вот так:

#include "openbase.h"
#include <qtsql>
#include "global.h"

....

void OpenBase::[i]run[/i]()
{
....
        QSqlQuery query;
        if (!query.exec("SELECT Adress, Port, Vremya, Script "
                                   "FROM baseservise "
                                  "WHERE Active = 'Yes';")) {
        qDebug() << "Unable to execute query - exiting";
        }
        QSqlRecord rec = query.record();
        Global::kolichestvo=0;

        while (query.next()) {
            Global::vector.resize(Global::kolichestvo + 1);
            Global::vector[Global::kolichestvo].adress  = query.value(rec.indexOf("Adress")).toString();
            Global::vector[Global::kolichestvo].port  = query.value(rec.indexOf("Port")).toInt();
            Global::vector[Global::kolichestvo].vremya = query.value(rec.indexOf("Vremya")).toInt();
            Global::vector[Global::kolichestvo].nameScript = query.value(rec.indexOf("Script")).toString();
            Global::vector[Global::kolichestvo].zanyatost=true;
            Global::kolichestvo += 1;
    }
    qDebug() << Global::kolichestvo;
    }
}


то выводит следующее -

release/openbase.o:openbase.cpp:(.text+0x60): undefined reference to `Global::vector'
release/openbase.o:openbase.cpp:(.text+0xc3): undefined reference to `Global::vector'
release/openbase.o:openbase.cpp:(.text+0xdc): undefined reference to `Global::vector'
release/openbase.o:openbase.cpp:(.text+0x192): undefined reference to `Global::vector'
release/openbase.o:openbase.cpp:(.text+0x1a6): undefined reference to `Global::vector'
release/openbase.o:openbase.cpp:(.text+0x1cd): more undefined references to `Global::vector' follow
release/openbase.o:openbase.cpp:(.text+0x67b): undefined reference to `Global::kolichestvo'
release/openbase.o:openbase.cpp:(.text+0x6b2): undefined reference to `Global::kolichestvo'
release/openbase.o:openbase.cpp:(.text+0x6b7): undefined reference to `Global::vector'
release/openbase.o:openbase.cpp:(.text+0x6cc): undefined reference to `Global::vector'
release/openbase.o:openbase.cpp:(.text+0x75d): undefined reference to `Global::kolichestvo'
release/openbase.o:openbase.cpp:(.text+0x762): undefined reference to `Global::vector'
release/openbase.o:openbase.cpp:(.text+0x777): undefined reference to `Global::vector'
release/openbase.o:openbase.cpp:(.text+0x858): undefined reference to `Global::kolichestvo'
release/openbase.o:openbase.cpp:(.text+0x85d): undefined reference to `Global::vector'
release/openbase.o:openbase.cpp:(.text+0x881): undefined reference to `Global::vector'
release/openbase.o:openbase.cpp:(.text+0x8bb): undefined reference to `Global::kolichestvo'
release/openbase.o:openbase.cpp:(.text+0x8c0): undefined reference to `Global::vector'
release/openbase.o:openbase.cpp:(.text+0x8dc): undefined reference to `Global::vector'
release/openbase.o:openbase.cpp:(.text+0x8e6): undefined reference to `Global::kolichestvo'
release/openbase.o:openbase.cpp:(.text+0x900): undefined reference to `Global::kolichestvo'
release/openbase.o:openbase.cpp:(.text+0x906): undefined reference to `Global::vector'
release/openbase.o:openbase.cpp:(.text+0x9b4): undefined reference to `Global::kolichestvo'
release/openbase.o:openbase.cpp:(.text+0x9b9): undefined reference to `Global::vector'
release/openbase.o:openbase.cpp:(.text+0x9dd): undefined reference to `Global::vector'
release/openbase.o:openbase.cpp:(.text+0xa7a): undefined reference to `Global::kolichestvo'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [release\probnick.exe] Error 1
mingw32-make: *** [release] Error 2
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 27.2.2025, 12:46