![]() |
|
Модераторы: bsa |
![]()
|
|
| efpies |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 20.6.2009 Где: СПб Репутация: нет Всего: нет |
Много гуглил, ничего полезного не нашёл (в учебнике Дейтелов даже примера кода нет, всё, предполагается, должно быть понятно не так).
Ну окей. Хочу задать масштаб отрисовки в одном месте (передавать как параметр в куче мест как-то накладно). constants.h
Unit1.cpp
Edge.h
scale в draw равен 1. Что я делаю не так? |
||||||
|
|||||||
| t_gran |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: нет Всего: 37 |
efpies, мне интересно как ваш код вообще работает. Вы посмотрите на эти строчки:
Unit1.cpp
Ничего странного не замечаете? Вы даже объект не создали, а пытаетесь вызвать метод draw, да ещё потом удаляете не созданный объект. Поразительно. Теперь по части extern. Переменную как раз в заголовочном файле вы должны описать как extern, а реализовывать её уже в одном из cpp файлов. К примеру так: constants.h
Unit1.cpp
Edge.h
И напоследок, советую, по возможности не использовать глобальные переменные. Это сообщение отредактировал(а) t_gran - 22.2.2012, 07:08 -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
||||||||
|
|||||||||
| efpies |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 20.6.2009 Где: СПб Репутация: нет Всего: нет |
Нет, не замечаю, просто не хочу сюда копировать 10 строк инициализации, к делу не относящейся Действительно, так работает, спасибо. Что интересно, это расходится с вот этой статьёй, или я чего-то не понимаю. Это сообщение отредактировал(а) efpies - 22.2.2012, 10:59 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
| t_gran |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: нет Всего: 37 |
Не подумайте, что придираюсь, но тогда и delete к делу не относится.
Абсолютно не расходится. Вы просто не так поняли. Заметьте, что в статье фигурируют только cpp файлы. О заголовочных файлах там ни слова. К тому же, нужно чётко понимать, что такое h файл, и что переменные в них никогда не объявляются. -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
| t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: нет Всего: 37 |
mes, поясните. Я что-то не то написал? Или вы к тому что я не так выразился и вместо инициализации употребил слово объявление?
Это сообщение отредактировал(а) t_gran - 22.2.2012, 14:51 -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
| feodorv |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Деление кода на .c-часть и .h-часть в достаточной степени является вопросом соглашения. Не принято объявлять переменные в заголовочных файлах, но это не значит, что там их объявлять совсем нельзя. Можно, но для ограниченного круга задач. Можно ведь и .c-файл заинклюдить:
никто не запрещает. А бывает, что требуется в нескольких проектах (небиблиотечным образом) включение одного и того же кода. И чтобы не писать каждый раз
можно весь код из mycode.c (вместе с объявлениями переменных etc) запихнуть в mycode.h. Получится просто
Но нужно, конечно, понимать, что и зачем делаешь -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||||
|
|||||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
не верю что нельзя определить переменную в хидере ну и маленькое замечание, в данном контексте не объявление, а определение объявление: extern value; определение: value; или extern value =0; и определение включает в себя объявление, но не наоборот.. |
|||
|
||||
| t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: нет Всего: 37 |
Добро Это сообщение отредактировал(а) t_gran - 22.2.2012, 18:09 -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
| efpies |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 20.6.2009 Где: СПб Репутация: нет Всего: нет |
ну да, Вы правы, но с десятью другими было бы все 11
Экстраполируя на мою задачу, A = constants.h, а B = Unit1.cpp. Я это понял так, раз объявляю её в A, а использовать хочу в B. |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
модуль это не отдельный файл, а грубо .cpp со всеми включенными хидерами... и если быть точнее, не модуль, а единица трансляции.. |
|||
|
||||
| efpies |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 20.6.2009 Где: СПб Репутация: нет Всего: нет |
Вот спасибо
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |