Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
Delphist |
14.8.2008, 9:46
Сообщение
#1
|
|
Студент ![]() Группа: Новичок Сообщений: 41 Регистрация: 4.8.2008 Из: Россия Пользователь №: 249 Спасибо сказали: 0 раз(а) Репутация: 0
|
Я хочу в своем классе создать два конструктора:
Прикол в том что если я вызываю конструктор№2, то почему форма создается без дерева, почему это происходи и как сделать чтобы все нормально заработало? Сообщение отредактировал Delphist - 14.8.2008, 9:49 |
|
|
|
|
Litkevich Yuriy |
14.8.2008, 9:57
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
это скорее вопрос по С++
Вынеси всю инициализацию в отдельную функцию: и ее вызывай в обоих кострукторах |
|
|
|
|
Delphist |
14.8.2008, 10:05
Сообщение
#3
|
|
Студент ![]() Группа: Новичок Сообщений: 41 Регистрация: 4.8.2008 Из: Россия Пользователь №: 249 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(Litkevich Yuriy @ 14.8.2008, 9:57) Link это скорее вопрос по С++ Вынеси всю инициализацию в отдельную функцию: А почему нельзя так как я привел, у нас Delphi без проблем это делает, а тут что за ассемблер |
|
|
|
|
zamnach |
14.8.2008, 10:08
Сообщение
#4
|
|
Студент ![]() Группа: Участник Сообщений: 36 Регистрация: 18.7.2008 Пользователь №: 239 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(Delphist @ 14.8.2008, 10:46) Link Я хочу в своем классе создать два конструктора: Присоединюсь к Юрию и добавлю, что во втором конструкторе создается экземпляр класса MyClass (с помощью конструктора№1). По выходу из конструктора №2 этот экземпляр благополучно прибивается. |
|
|
|
|
AD |
14.8.2008, 10:16
Сообщение
#5
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Цитата(Delphist @ 14.8.2008, 11:05) Link А почему нельзя так как я привел, у нас Delphi без проблем это делает, а тут что за ассемблер Насколько я знаю: в С++ в конструкторе можно вызывать конструктор предка, а не другой свой же конструктор. Поэтому следует сделать, как описал Litkevich Yuriy |
|
|
|
|
Litkevich Yuriy |
14.8.2008, 10:20
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(Delphist @ 14.8.2008, 14:05) Link у нас Delphi без проблем это делает А ты не путаешь конструктор с обработчиком события типа OnCreate ? |
|
|
|
|
void* |
14.8.2008, 10:55
Сообщение
#7
|
![]() Программист-самоучка ![]() ![]() ![]() Группа: Участник Сообщений: 429 Регистрация: 4.6.2008 Пользователь №: 193 Спасибо сказали: 28 раз(а) Репутация: 3
|
Delphist, учи матчасть
тебе все правильно объяснили zamnach и AD |
|
|
|
|
Andrew Selivanov |
26.8.2008, 15:52
Сообщение
#8
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 249 Регистрация: 9.10.2007 Из: Москва Пользователь №: 3 Спасибо сказали: 15 раз(а) Репутация: 6
|
Обобщим?
1) Конструктор это не функция, его нельзя вызвать. 2) Это ограничение есть в C++, в Java его нет (можно использовать такие штуки как this(), super() ) 3) Может быть ограничение уберут в upcoming стандарте. А вообще это вопрос из замечательного FAQ: Link |
|
|
|
|
Litkevich Yuriy |
26.8.2008, 16:19
Сообщение
#9
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
на русском Link
|
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 13.12.2025, 12:00 |