指向函数成员的指针
Pointers to function members
给定以下简单代码:
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();
我做错了什么?
感谢
GCC 4.8.1中的错误不言自明:
错误:必须使用"'或'->'调用指向"action(…)"中成员函数的指针,例如"(…->*action)(…)'
basePointer->*action();
所以,简单地做:
(basePointer->*action)();
相关文章:
- 如果基类包含双指针成员,则派生类的构造函数
- C++正确的指针成员初始化
- 是否可以使用智能指针成员设置具有另一个结构的结构?
- 为什么 operator() 处的指针成员不起作用?
- 更改队列指针成员的值需要在 C++ 中出现奇怪的错误
- 如何从另一个嵌套类中调用某个封闭类的嵌套类的函数指针成员的值?
- 结构对象的指针成员在传递给函数时被修改
- 参数的混合值,当我调用指针成员函数时
- 如何正确使用结构的共享指针成员?
- C++:私有类指针成员返回未定义的值
- 在函数中传递带有指针成员的结构是浅拷贝或深拷贝在 C 中
- 包含指针成员的嵌套结构
- 在 c++ 中,为什么 -> 被称为二进制中缀指针成员访问运算符?
- C++ 类指针成员行为奇怪(错误)
- 常量结构的指针成员
- 在类C++指针成员中
- 指针成员未在复制构造函数中初始化
- C++移动拥有指针成员的构造函数
- C++ 包含唯一指针成员变量的类的赋值运算符
- 如何使用 QPoint 指针成员对类进行排队和取消排队