【发布时间】:2011-11-06 21:46:08
【问题描述】:
我最近发现 C++ 中有一个函数引用的概念 :)。 因此存在指向函数和指向成员函数的不同类型。问题出现了。是否有“引用成员函数”的概念?
我尝试编译以下代码,但 GCC 3.4.6 报错。
#include <iostream>
using namespace std;
class A {
public:
virtual void Af() const {
cout << "A::Af()" << endl;
}
};
int main() {
typedef void (A::& MemFnc)() const;
MemFnc mf = &A::Af;
A a;
(a.*mf)();
return 0;
}
【问题讨论】:
-
gcc 3.4.6?您应该考虑更新编译器。此外,当询问触发编译器错误的代码时,最好提供实际的错误消息(从输出中的第一个错误开始)并确定编译器抱怨的行。
-
我无权更新 GCC :(。我没有提供错误代码,因为我认为在这种情况下,它给出的错误类型无关紧要,重要的是它没有'不懂这个语法。
-
如果要引用成员,应该使用哪种语法来使用它?指向成员的指针与
.*一起使用,因此常见用法表明对成员的引用应该只是删除星号,结果证明是简单的.?!这与使用普通成员完全一样。
标签: c++ function-pointers