![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
в восьмерке нормально все, хотя в прошлых версиях была такая фигня. ну это на компилятор не стоит сваливать это как, можно пример простой? в смысле? |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
меня тоже раздражают в VS некоторые моменты. но все они весьма мелочные.
к примеру то, что в классе нельзя создать чисто виртуальный конструктор но вообще впечатление о связке VS+Visual Assist отличнейшие |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
Виртуальных конструкторов не бывает в принципе |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Максимальная версия сейчас EVC 4.0 А на кого? Не я же генерю машинный код. Кто ему виноват, что он не знает того, что не все инлайны можно делать инлайнами, ведь стандарт утверждает что делать или нет оптимизацию инлайн на совести компилятора. Че это я должен убрать слово inline руками в тех местах, где он не сумел правильно подставить? Раз не можешь делай функцию! Так везде работает. В двух cpp шниках если объявить функцию с одинаковым именем, то линкер ругается, хотя в заголовочных файлах прототипы функций не объявлены! Добавлено через 2 минуты и 4 секунды Это еще почему? Очень даже есть, на них весь VCL держится. Просто их нет в С++. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
И правильно делает, в таких случаях положено использовать модификатор static. Что-то я не замечал в вцл такого, на этапе создания объекта всегда известен его тип.
|
||||
|
|||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
Alexeis,
В С++ нет метаклассов. А виртуальный конструктор "через бубен" можено сделать, как предлагает Страуструп, метод Clone -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
ХЗ. Недоделанный он и урезанный до нельзя.
А вот среда не знает тип объекта, потому при мышкоделии юзает виртуальный конструктор для создания необходимого класса. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
||||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
среда не знает, но код который его создает знает, иначе как-бы выделялась память под объект.
Добавлено через 53 секунды зы никогда eVC не использовал |
|||
|
||||
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
хм.. а другие компиляторы и без static не ругаются...
Вот этот код и вызывает виртуальный конструктор, который создает нужный объект. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
Тогда это уже фабрика классов, а не конструктор. вот BCB6 к примеру не ругается, а вызывает какую либо одну реализацию функции. Для компоновщика они одинаковы, хоть и находятся в разных obj файлах. Он в принципе не может определить какую функцию вызывать, так как не обрабатывает исходники. |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Хм, это плохие компиляторы.
Что именно он вызывает? TButton::TButton(TControl *parent)? -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Не буду утверждать, но предположу, что виртуальный конструктор Create у переменной метакалсса, ведь классы реализованы не на C++. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Alexeis, не буду утверждать, но предположу, что TButton.Create - это тоже никакой не виртуальный конструктор
А вот создание объекта имеяя только метакласс - это уже виртуальный конструктор. Это легко реализуемо. Сложнее с получением самих метаклассов. В Delphi они есть. В С++ их нет, но, к примеру, Qt реализует их(и рефлексию вообще) посредством отдельных утилит. В BCB это делается точно также, только "отдельная" утилита "встроена" в компилятор. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Все наследники TComponent по дефолту имеют виртуальный конструктор Create, а это вся палитра VCL, остальные его перекрывают.
Боюсь что эта утилита называется Dcc32.exe. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |