struct B
{
void (B::*pf)(int, int); // data member
B () : pf(&B::foo) {}
void foo (int i, int j) { cout<<"foo(int, int)\n"; } // target method
};
int main ()
{
B obj;
// how to call foo() using obj.pf ?
}
В приведенном выше тестовом коде pf
является элементом данных B
. Каково правило грамматики для его вызова? Это должно быть прямолинейно, но я не получаю правильного совпадения. например Если я попробую obj.*pf(0,0);
, то получу:
error: must use ‘.*’ or ‘->*’ to call pointer-to-member function in ‘pf (...)’, e.g. ‘(... ->* pf) (...)’
"How to call class member using function pointer?"
, пока я спрашиваю"<...same...>, when the function pointer itself is a class member also."
. Обратите внимание, что ответы на оба вопроса разные. - person iammilind   schedule 01.07.2015(obj.*ptr)
, только здесьptr == (obj.ptr)
. Но раз уж вы не согласны, я воздержусь ;-) - person Ciro Santilli 新疆再教育营六四事件ۍ   schedule 01.07.2015