![]() |
|
Модераторы: bsa |
![]()
|
|
| hsilgos |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 26.4.2009 Репутация: 1 Всего: 2 |
Естественно! Указатель на метод класса отличается от указателя на свободную функцию!
Добавлено @ 19:56 Вообще, чтобы вызвать нестатический метод класса, нужен указатель на объект и указатель на функцию. И вызывать надо вот таким образом:
Добавлено через 9 минут и 56 секунд
Работать, опираясь на это - очень большая ошибка. Рано или поздно где-то в коде это аукнется. У вас на 6-ке, возможно, это прокатывало, потому что добавляли/удаляли элементов не много, если же попробовать на больших объемах, думаю, прийдет кранты. Да и кто мешает написать свой аллокатор и распределять память по-своему? Тогда ваши указатели останутся валидными всегда. Это сообщение отредактировал(а) hsilgos - 27.6.2009, 19:57 |
||||||||
|
|||||||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
в vc шаманские auto_prt-ы, их можно пихать в контейнеры 8)
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Irdis |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 21.5.2008 Репутация: нет Всего: 1 |
ололололо O_o
как такое может прийти в голову?? (стало интересно) |
|||
|
||||
| hsilgos |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 26.4.2009 Репутация: 1 Всего: 2 |
Вот реализация конструктора копирования в MSVC-шном (2005) STL-е.
Всё по стандарту, пихать в контейнеры нельзя. |
||||
|
|||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
hsilgos, спасибо!
Я до этого ещё не дошёл, немножко вперёд поезда забегаю. А если такую функции надо передавать функции-члены разных классов, то нужно использовать указатель на базовый класс, верно? |
|||
|
||||
| hsilgos |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 26.4.2009 Репутация: 1 Всего: 2 |
Если использовать шаблон, то можно вообще любые классы. Главное, чтоб у метода совпадала сигнатура. А что касается базового класса, я вот тут, чесно говоря, не знаю, безопасно ли это... т.е:
Хотя в wxWidgets сделано по подобному принципу, и вроде как на всех платформах работает... Если же метод void f() будет виртуальным и объявлен в базовом классе А, то таких неопределенностей не будет. |
||||
|
|||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
В общем, в сторону указатель на ф-ию, вместо него указатель на базовый класс:
И всё работает. Спасибо за терпение. |
|||
|
||||
![]()
|
| Правила форума "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. |