Поиск:

Ответ в темуСоздание новой темы Создание опроса
> конструктор наследника TImage 
:(
    Опции темы
Goshas
Дата 1.6.2010, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.3.2010

Репутация: нет
Всего: нет



у меня есть наследник TImage к примеру Im_heir
как мне описать конструктор?
описывал конструктор по умолчанию, и в случае этой строки
Код

Im_heir *A = new Im_heir();

выводил ошибку.
PM MAIL   Вверх
Dem_max
Дата 1.6.2010, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 14
Всего: 39



не видно наследника то


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Goshas
Дата 1.6.2010, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.3.2010

Репутация: нет
Всего: нет



Код

// ... h

class Im_heir : public TImage
{
public:
    int k;
    Im_heir();
};


// ... cpp

Im_heir::Im_heir()
{
}

PM MAIL   Вверх
Domain
Дата 1.6.2010, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 11.3.2010

Репутация: нет
Всего: нет



Im_heir *A = new Im_heir(this); попробуй. или просто без скобок.  
PM MAIL   Вверх
ИванМ
Дата 1.6.2010, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 5
Всего: 23



Goshas, на сколько я помню, у TImage нет конструктора по умолчанию. Надо ему что-то передавать в параметр.
PM MAIL   Вверх
Goshas
Дата 1.6.2010, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.3.2010

Репутация: нет
Всего: нет



ИванМ, а при наследовании конструктор должен именть такие же параметры как и у родителя?
PM MAIL   Вверх
ИванМ
Дата 1.6.2010, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 5
Всего: 23



Goshas, не обязательно. Просто нужно что бы конструктор родителя тоже как-то вызывался. Если конструктор родителя по умолчанию есть и вы никакой другой конструктор родителя не вызываете сами, то он сам вызовется. Но в случае TImage такого конструктора нет, хотя я точно не помню.
PM MAIL   Вверх
Goshas
Дата 1.6.2010, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.3.2010

Репутация: нет
Всего: нет



а могу ли я не делать для производного класса конструктор, предпологая, что вызовется конустрктор родителя?
или все таки нужно?
PM MAIL   Вверх
ИванМ
Дата 1.6.2010, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 5
Всего: 23



Goshas, если у родителя есть конструктор по умолчанию, то можно в производном классе конструктор не писать, если ничего не нужно делать в самом производном классе в момент создания объекта.
PM MAIL   Вверх
Goshas
Дата 2.6.2010, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.3.2010

Репутация: нет
Всего: нет



поставим вопрос так:
у меня есть наследник класса TImage с полем public: int k;
как мне создать обьект(экземпляр) этого класса?
PM MAIL   Вверх
ИванМ
Дата 2.6.2010, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 5
Всего: 23



Goshas, специально посмотрел справку. Действительно, у TImage нет конструктора по умолчанию. Только такой:
__fastcall virtual TImage(Classes::TComponent* AOwner);
Соответственно, чтобы создать объект класса, унаследованный от TImage нужно вызвать этот конструктор.
Типа такого:
Код

class Im_heir : public TImage
{
public:
    int k;
    __fastcall virtual  Im_heir(Classes::TComponent* AOwner): TImage(AOwner) {}
};

PM MAIL   Вверх
Goshas
Дата 2.6.2010, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.3.2010

Репутация: нет
Всего: нет



о, спасибо огромное) 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1038 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.