![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 1 Всего: 20 |
При условии, что нестатический метод виртуален(хотя я думаю в данном контексте это не важно).
Есть ли какой-нибудь способ ? |
|||
|
||||
Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
? Добавлено @ 11:55 Ну или вот ещё:
Это сообщение отредактировал(а) Mayk - 27.8.2005, 11:52 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
En_t_end |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 1 Всего: 20 |
Mayk
У меня немного другой случай. Скорее всего проблема именно в виртуальности нестатичного метода. К примеру:
Добавлено @ 12:07
... так как тот виртуальный метод я заново не описывал и он используется из класса родителя... class SomeClass : public ParClass Класс родитель и его виртуальный метод NonStaticVirtual() описан в другом заголовочном файле, и реализован в другом исполняемом. Поэтому мне кажется, компилятор не может задействовать виртуальный метод, так как он не является статичном в какой-либо мере для данного члена компиляции. |
||||
|
|||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 1 Всего: 20 |
Кстати вариант с принудительным приведением к статическому члену привел к появлению исключения, вероятно все таки VISUAL STUDIO 2003 не умеет правильно статить виртуальные методы, оставляя в ссылке адрес на локальный метод.
|
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Попробуй вот так вызвать
static_cast<ClassWithVirtualFunc*>(NULL)->ClassWithVirtualFunc::virtualFunc(); -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 1 Всего: 20 |
Mayk
Исключение, увы... |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
А ты уверен, что виртуальный метод не обращается к нестатическим переменным класса?
-------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 1 Всего: 20 |
Mayk
Точно обращается, 100 %, так как имя этого метода EndDialog - ![]() |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
когда из статического метода вызывается нестатический (неважно, виртуальный или нет), всегда нужно понять (и дать понять компилятору), для какого объекта нужно его вызвать
а все данные о виртуальных функциях привязываются именно к объекту -------------------- qqq |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |