LINUX.ORG.RU

class b
{
public:
void test();
};

....
void(b::*FUNC_P)();
FUNC_P = &b::test; // take a method's address
....
//usage
b a_1;
(a_1->*FUNC_P)(); // call via method's pointer

Вызов метода без объекта - ошибка!

I hope it will help:))

Good Luck!

tvn
()

Можно, но только на статические методы.

А с обычными - это дурацкое расширение в С++ Builder

Havoc ★★★★
()

Интересно а я в примере брал указатель на статический метод? Или использовал расширение С++ Builder? :))

tvn
()

2TVN: ты использовал указатель на обычный метод класса. наверное ты знаешь, чем он отличается от статического метода и отчего более естественно использовать указатели на статические методы, в отличие от обычных;)
пишу типа вверх ногами, чтобы как в мурзилке сошло за ответ:) шутка;)
в обычных методах в функцию передается неявный параметр this, в то время как в статический метод этот параметр не передается. статический метод - это то же самое, что обычная функция в Си, только с ограниченной областию видимости;) где область видимости ограничена классом.

proff
()

->* спасет отцов русской демократии? :)

anonymous
()

2proff: Я об этом давно догадывался:)))) Действительно в примере void test() = void test(b* class_pointer) И указатель на метод test() может быть приведен к void global_test(b* class_pointer) - обычная функция (не надо говорить что нельзя - все зя :)))

Для того чтобы статический метод работал с данными класса придется объявлять его как test(b* class_pointer), в итоге - без указателя на объект работать с данными класса нельзя, так зачем усложнять себе работу статическими методами там где можна обойтись без них? И т.д. 2anonymous (*) (2002-01-30 01:04:27.0) Интересно :)) Но мне удобнее использовать ->* для реализации smart pointers, а не делать с него operator() или я не правильно понял? :)

Good luck!

tvn
()

2tvn: вот вот, test(b* class_pointer) - это просто "сделать ручками то, что за тебя делает компайлер в обычном методе". чуствуешь сходство "this" и "b* class_pointer"? ;-)

proff
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.