![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
libertas |
|
||||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 10.3.2014 Репутация: нет Всего: нет |
Привет!
Подскажите, пожалуйста, можно ли в хедере инициализировать переменную К примеру такой код не работает:
Добавлено через 8 минут и 45 секунд Вопрос закрыт. Так работает:
|
||||
|
|||||
Нэраварин |
|
||||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 9.3.2009 Репутация: нет Всего: нет |
Это НЕ хедер! Вы ошиблись в терминологии, обычно хедером называется заголовочный файл, например:
То, что написали вы называется Композиция, когда класс(Figure) в своих элемент-данных содержит объект(rect) другого класса(QRect). Чтобы инициализировать объект другого класса в элемент данных класса его содержащего нужно использовать специальный инициализатор элементов " : ", например:
Этот ответ добавлен с нового Винграда - http://vingrad.com |
||||
|
|||||
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: нет Всего: 31 |
ТС немного у другом спросил.
- нет, строго говоря незя. и тоже со статическими мемберама. - нестрого говоря, можно ![]() Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: 2 Всего: 2 |
Хидер - это заголовочный файл, в вашем же случае, судя по всему, речь идёт об объявлении класса. Есди да, то в объявлении класса можно инициализировать только статические целочисленные константы (во всяком случае в старых плюсах, в новых вроде можно и float). а как тогда назвать это? ![]()
|
|||
|
||||
Нэраварин |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 9.3.2009 Репутация: нет Всего: нет |
Господа, что вы воду мутите?! тут же ясно всё написаннно!
И НЕ работает оно как раз таки потому, что так нельзя инициализировать объект rect таким способом! В Qt вылетит такая ошибка:
Снова внимательно перечитываем пост автора...О чём тут ещё может идти речь? кроме как не о неудавшейся инициализации? rect?! Я вот например иных вариантов не вижу! Соответственно объект rect нужно инициализировать с помощью инициализатора элементов ( двоеточие следующее после закрывающей круглой скобки конструктора и ДО фигурных скобок тела конструктора )
Так же ещё потому, что у объекта-элемента(rect) создающегося в полях другого класса(Figure) может быть(а они есть) конструктор по умолчанию и set-функции, что добавляет накладные расходы и происходит "двойная инициализация" ! инициализатор элементов позволяет избежать накладных расходов! Этот ответ добавлен с нового Винграда - http://vingrad.com |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |