LINUX.ORG.RU

Глобальные переменные


0

0

Вопрос - как в C++ создать глобальные переменные.

Например, пишу я в файл editor.h такую строку:

extern QString current_filename;

В нужном файле у меня написано:

#include <qstring.h>
<...>
#include <editor.h>

И потом в какой-то функции:

current_filename = filename;

При компиляции ощибка:

g++ -Wl,-rpath,/usr/lib/qt/lib -o editor .obj/main.o .obj/form1.o .obj/frmsettings.o .obj/qmake_image_collection.o .obj/moc_form1.o .obj/moc_frmsettings.o -L/usr/lib/qt/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm
.obj/form1.o(.text+0x204): In function `frmMain::fileOpen()':
: undefined reference to `current_filename'
collect2: ld returned 1 exit status
make: *** [editor] Error 1

anonymous

ну так
extern QString current_filename;
это ты объявляешь что данная переменная где-то есть уже
а надо ее еще и объявить где-то типа
QString current_filename;

anonymous
()
Ответ на: комментарий от anonymous

А, вот как. Этого я не знал, спасибо. Но получаю все тот же undefined reference!

#cat editor.h
QString current_filename;

А вот что стоит в начале функции (которая расположена в другом файле, который #include'ит файл editor.h)

void frmMain::fileOpen()
{
extern QString current_filename;


И все равно undefined reference!

anonymous
()
Ответ на: комментарий от anonymous

Ну что такое!

//#include <editor.h>
QString current_filename;

- заработало!

Не понял, а какая разница - включить файл #include'ом или просто поместить его содержимое в начало файла?

anonymous
()
Ответ на: комментарий от anonymous

В h-файле опиши переменную как extern, а в одном из компонующихся файлов - как не extern.

Murr ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.