![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
Доброго времени суток! Пожалуйста помогите разобраться в след ситуации:
Есть 2 класса:
При компиляции появляется ошибка "E2279 Cannot find default constructor to initialize member 'B::data'". На сколько я понимаю, требуется добавить конструктор A(); Но A - это класс, который в зависимости от типа хранит разные значения, и такой конструктор мне не нужен... Объясните пожалуйста почему возникает такая ошибка и как ее исправить. Заранее большое спасибо! Это сообщение отредактировал(а) Superklug - 15.11.2009, 23:45 |
|||
|
||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
Правильно понимаете. Если не нужен конструктор по умолчанию, храните в B указатель на A и создавайте объект динамически.
Это сообщение отредактировал(а) ИванМ - 16.11.2009, 00:05 |
|||
|
||||
kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Проблема, видимо, тут
Сначала для поля data будет вызываться конструктор по умолчанию. Но он у Вас в классе A отсутствует. В таких случаях, можно использовать список инициализаторов:
Для next это не обязательно. -------------------- |
||||
|
|||||
Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
kemiisto, спасибо! Пойду читать про список инициализаторов... Никогда не пользовался..
А для чего вызывается конструктор по умолчанию? Если не сложно, опишите процесс инициализации для класса B. |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Superklug, прежде чем что-то писать почитали бы книжку какую-нить...
![]() Нафиг надо. ![]() -------------------- |
|||
|
||||
Superklug |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
kemiisto, если б сам разобрался - не стал бы писать на форум...
Еще раз спасибо! P.S. уже сижу Страуструпа читаю) |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
- инициализация data (вызов конструктора, указанного в списке инициализации) - вызов конструктора B какой-то конструктор для data по-любому нужно вызвать, чтобы не работать с несконструированным объектом Это сообщение отредактировал(а) maxim1000 - 16.11.2009, 09:08 -------------------- qqq |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |