0
考虑以下简单的代码:指针的功能成员
namespace exercise {
class A {
public:
virtual void a() = 0;
virtual void b() = 0;
virtual void c() = 0;
};
class B : public A {
void a() { std::cout << "a function @ B class"; }
void b() { std::cout << "b function @ B class"; }
void c() { std::cout << "c function @ B class"; }
};
class C : public A {
void a() { std::cout << "a function @ C class"; }
void b() { std::cout << "b function @ C class"; }
void c() { std::cout << "c function @ C class"; }
};
using Pstd_mem = void(A::*)();
void foo(A* basePointer, Pstd_mem action) {
basePointer->*action();
}
}
int main(void) {
using namespace exercise;
A* b = new B();
A* c = new C();
foo(b, &A::b);
}
我只是想用函数foo调用函数B()通过一个成员函数指针,但是编译器给我一个错误的该行:
basePointer->*action();
我做错了什么?
感谢
[这](http://stackoverflow.com/questions/18266582/ how-create-a-function-pointer-to-point-a-member-function/18266621#18266621)可能有帮助 – aaronman
_What_error?告诉我们你看到了什么。 –
明显调用的括号之前的表达式必须有(指针)功能类型 – Rouki