Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Михал Гость
|
Добавлено: Пн Май 26 2003 17:20 Заголовок сообщения: помогите начинающему, please !!! |
|
|
Знаю, как создавать глобальные переменные в консольном приложении (просто описать их перед main). Теперь, сделал такую же программу с помощью AppWizard на VC из Microsoft Visual Studio . Данные из одного диалогового окна в другое нужно передавать через глобальную переменную. В project.cpp есть - CProjectApp theApp; Я добавил в определение класса CProjectApp переменную нужного мне типа, после обратился к ::theApp. (theApp)тоже пробовал. Компилятор выдал ошибку - нет такой глобальной переменной. Пробовал пошагово - процесс начинается с _tWinMain. Но не менять же библтотеку. Знаю, что вопрос элементарный, но в чем же дело?Заранее благодарю за помощь. |
|
Вернуться к началу |
|
|
GREA
Зарегистрирован: 14.05.2003 Сообщения: 758 Откуда: Новосибирск
|
Добавлено: Пн Май 26 2003 20:24 Заголовок сообщения: На делфе это решается: файл/использовать модуль, может и на VC такое есть(--) |
|
|
-- |
|
Вернуться к началу |
|
|
Борис Гость
|
Добавлено: Вт Май 27 2003 13:37 Заголовок сообщения: Re: помогите начинающему, please !!! |
|
|
Модуль А: int abc; // должно быть _не_ внутри функции
Модуль Б: external int abc; // должно быть _не_ внутри функции
Модуль В: external int abc; // должно быть _не_ внутри функции
и т. д. |
|
Вернуться к началу |
|
|
POL Гость
|
Добавлено: Ср Май 28 2003 15:15 Заголовок сообщения: Re: помогите начинающему, please !!! |
|
|
Если я правильно понял, то эту глобальную переменную надо использовать в функции в другом классе и ДРУГОМ ФАЙЛЕ? Об этом говорит "Данные из одного диалогового окна в другое ..." И если все же использовать глобальные переменные, то можно например так. В файле с классом первого диалога пишем: /* * Dlg1.cpp */ #include "Dlg1.h" .... int MyGlobalValue = 0; // забиваем память под переменную, тип int - чисто для примера; описание переменной идет ВНЕ всякой функции .... void Dlg1::AnyFunc( .... MyGlobalValue = AnyIntValueIn1; .... }
В заголовочном файле /* * Dlg1.h */ .... extern int MyGlobalValue; // просто говорим, что есть некто по имени MyGlobalValue ....
Тогда в файле с классом второго диалога пишем: /* * Dlg2.cpp */ #include "Dlg1.h" .... void Dlg2::AnyFunc( .... AnyIntValueIn2 = MyGlobalValue; // в Dlg1.h компилятору объяснили, что есть такой MyGlobalValue и он целый .... } Вот и все. Вообще-то я противник использования глобальных переменных, но если уж никак посоветовал бы свести их все в одном CPP-файле, а сслыки на них в одном H-файле: /* * MyGlobals.Cpp */ int iGlbVal1 = 0; char zsPass[100] = "Сам такой!!!"; ...
/* * MyGlobals.H */ extern int iGlbVal1; extern char zsPass[100];
MyGlobals.Cpp включается в проект, а строка #include "MyGlobals.H" - в любой файл, где требуется доступ к глобальным переменным. Поскольку часто проблеммы с глобальными переменными вызываются тем, что программист забыл их проинициализировать, такой подход позволит свести проверку инициированности переменных к просмотру файла MyGlobals.Cpp. Строку #include "MyGlobals.H" можно добавить даже в MyGlobals.Cpp: /* * MyGlobals.Cpp */ #include "MyGlobals.H"
int iGlbVal1 = 0; char zsPass[100] = "Сам такой!!!"; ...
В этом случае, если изменен тип глобальной переменной в CPP-файле, а в H-файле забыли, то компилятор ругнется - исправляем и ВСЕ файлы проекта, использующие наши глобальные переменные ВСЕГДА знают ПРАВИЛЬНЫЕ описатели таких переменных. |
|
Вернуться к началу |
|
|
|