Russian Qt Forum

Программирование => С/C++ => Тема начата: bukum от Декабрь 03, 2010, 19:43



Название: Глобальная переменная. Ошибка
Отправлено: bukum от Декабрь 03, 2010, 19:43
Создал GUI приложение в mainwindow.h
сделал глобальную ticktack

Код:
class MainWindow : public QMainWindow
{
    Q_OBJECT

static int ticktack;

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;



};

в main.cpp пытаюсь обратиться к ней
Код:
void MainWindow::updateTime()
{
   // this->ticktack++;
    MainWindow::ticktack++;
}

ошибка :: error: collect2: ld returned 1 exit status

если  MainWindow::ticktack++;  закомментить ,то нормально вроде компилит...


Название: Re: Глобальная переменная. Ошибка
Отправлено: BRE от Декабрь 03, 2010, 19:45
Почитай в книге по C++, как нужно декларировать и определять статические переменные или поищи по форуму.


Название: Re: Глобальная переменная. Ошибка
Отправлено: deM1d от Декабрь 03, 2010, 19:50
ошибка :: error: collect2: ld returned 1 exit status , это не сама ошибка...
читай логи сборки...


Название: Re: Глобальная переменная. Ошибка
Отправлено: bukum от Декабрь 03, 2010, 19:54
http://kubuntu.ru/node/4544 вот тут также делали.


Цитировать
debug/mainwindow.o:C:\Qt\2010.05\WORK\cg_tribe_test-build-desktop/../cg_tribe_test/mainwindow.cpp:44: undefined reference to `MainWindow::ticktack'

debug/mainwindow.o:C:\Qt\2010.05\WORK\cg_tribe_test-build-desktop/../cg_tribe_test/mainwindow.cpp:44: undefined reference to `MainWindow::ticktack'

collect2: ld returned 1 exit status



Название: Re: Глобальная переменная. Ошибка
Отправлено: BRE от Декабрь 03, 2010, 19:56
http://kubuntu.ru/node/4544 вот тут также делали.
Внимательно посмотри на первый комментарий, внизу, там где написано:
---
 otherClass.cpp:

...


Название: Re: Глобальная переменная. Ошибка
Отправлено: bukum от Декабрь 03, 2010, 20:01
Код:
otherClass.cpp:
#include "someClass.h"
someClass::var1 = 5;
someClass::var2 = someClass::var1 / 2.0;
?
Все равно не втыкаю.
Я и так писал тоже
 
Код:
 // this->ticktack++;
    MainWindow::ticktack=MainWindow::ticktack+1;

#include у меня в cpp  написан тоже...  ???


Название: Re: Глобальная переменная. Ошибка
Отправлено: BRE от Декабрь 03, 2010, 20:05
В файле mainwindow.cpp после инклюдов добавь строчку:
int MainWindow::ticktack = 0;


Название: Re: Глобальная переменная. Ошибка
Отправлено: bukum от Декабрь 03, 2010, 20:09
инициализация...спасибо.