2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Глобальные переменные в оконных приложениях
Сообщение15.12.2010, 23:18 
Аватара пользователя
Всем привет! Кто-нибудь, знает как объявлять глобальные переменные при создании оконных приложений в С++ Builder? Т.е. пусть имеются формы Form1, Form2, и из под одного указателя можно получить доступ к другой форме. Headers и sources соответственно: Unit1.h, Unit1.cpp, etc.
Пусть double gdVar = 3.0; //global double variance - глобальная переменная (т.е. одна на две формы). Вопрос: где именно её объявлять? Делаю обычный файл file1.h:
#ifndef FILE1H
#define FILE1H

double d=3.0;
#endif

И подключаю этот файл в .cpp файлы и... для каждой формы переменная gdVar своя несмотря на меры условной компиляции, которая явно указывает, что объявление должно происходить один, и только один раз. Что делать?

 
 
 
 Re: Глобальные переменные в оконных приложениях
Сообщение16.12.2010, 00:35 
Ваши меры условной компиляции "указывают", что в каждом исходном файле, включающем file1.h, глобальная переменная gdVar будет объявлена один раз.

Обычно в подобных случаях поступают следующим образом:
1. file1.h:
Код:
#ifndef FILE1H
#define FILE1H

extern double gdVar;
#endif
2. В каком нибудь одном .cpp-файле:
Код:
#include "file1.h"
...
double gdVar = 3;

 
 
 
 Re: Глобальные переменные в оконных приложениях
Сообщение16.12.2010, 08:04 
Аватара пользователя
Применил такую схему:
В файле Unit1.cpp

#include "Unit1.h"
#include "Unit2.h"
#include "File1.h"
...
double gdVar = 1.0;
...

В файле Unit2.cpp:
#include "Unit2.h"
#include "Unit1.h"
...
В общем в Unit2.cpp переменная gdVar не видна.

 
 
 
 Re: Глобальные переменные в оконных приложениях
Сообщение16.12.2010, 18:23 
Аватара пользователя
У меня было прозрение, когда прочитал форум с точно такой же темой
topic18004.html

В выше приведено коде, в файле Unit2.cpp забыл подключить file1.h. Всё просто супер!!!

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group