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