| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Изменяемые глобальные переменные |
| Автор: efpies 22.2.2012, 02:42 | ||||||
| Много гуглил, ничего полезного не нашёл (в учебнике Дейтелов даже примера кода нет, всё, предполагается, должно быть понятно не так). Ну окей. Хочу задать масштаб отрисовки в одном месте (передавать как параметр в куче мест как-то накладно). constants.h
Unit1.cpp
Edge.h
scale в draw равен 1. Что я делаю не так? |
| Автор: t_gran 22.2.2012, 06:50 | ||||||||
| efpies, мне интересно как ваш код вообще работает. Вы посмотрите на эти строчки: Unit1.cpp
Ничего странного не замечаете? Вы даже объект не создали, а пытаетесь вызвать метод draw, да ещё потом удаляете не созданный объект. Поразительно. Теперь по части extern. Переменную как раз в заголовочном файле вы должны описать как extern, а реализовывать её уже в одном из cpp файлов. К примеру так: constants.h
Unit1.cpp
Edge.h
И напоследок, советую, по возможности не использовать глобальные переменные. |
| Автор: efpies 22.2.2012, 10:38 | ||
Нет, не замечаю, просто не хочу сюда копировать 10 строк инициализации, к делу не относящейся Действительно, так работает, спасибо. Что интересно, это расходится с http://www.rsdn.ru/forum/cpp/2706624.1.aspx статьёй, или я чего-то не понимаю. |
| Автор: mes 22.2.2012, 12:31 |
расходится в чем ? |
| Автор: t_gran 22.2.2012, 13:59 | ||||
Не подумайте, что придираюсь, но тогда и delete к делу не относится.
Абсолютно не расходится. Вы просто не так поняли. Заметьте, что в статье фигурируют только cpp файлы. О заголовочных файлах там ни слова. К тому же, нужно чётко понимать, что такое h файл, и что переменные в них никогда не объявляются. |
| Автор: mes 22.2.2012, 14:36 |
| Автор: t_gran 22.2.2012, 14:43 |
| mes, поясните. Я что-то не то написал? Или вы к тому что я не так выразился и вместо инициализации употребил слово объявление? |
| Автор: mes 22.2.2012, 16:42 | ||
не верю что нельзя определить переменную в хидере ну и маленькое замечание, в данном контексте не объявление, а определение объявление: extern value; определение: value; или extern value =0; и определение включает в себя объявление, но не наоборот.. |
| Автор: t_gran 22.2.2012, 18:02 | ||
Добро |
| Автор: efpies 23.2.2012, 00:01 | ||||
ну да, Вы правы, но с десятью другими было бы все 11
Экстраполируя на мою задачу, A = constants.h, а B = Unit1.cpp. Я это понял так, раз объявляю её в A, а использовать хочу в B. |
| Автор: mes 23.2.2012, 01:09 |
модуль это не отдельный файл, а грубо .cpp со всеми включенными хидерами... и если быть точнее, не модуль, а единица трансляции.. |
| Автор: efpies 23.2.2012, 01:16 |
| Вот спасибо |