2TVN: ты использовал указатель на обычный метод класса. наверное ты знаешь, чем он отличается от статического метода и отчего более естественно использовать указатели на статические методы, в отличие от обычных;)
пишу типа вверх ногами, чтобы как в мурзилке сошло за ответ:) шутка;)
в обычных методах в функцию передается неявный параметр this, в то время как в статический метод этот параметр не передается. статический метод - это то же самое, что обычная функция в Си, только с ограниченной областию видимости;) где область видимости ограничена классом.
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() или я не правильно понял? :)
2tvn: вот вот, test(b* class_pointer) - это просто "сделать ручками то, что за тебя делает компайлер в обычном методе". чуствуешь сходство "this" и "b* class_pointer"? ;-)