【发布时间】:2009-09-14 22:42:32
【问题描述】:
我在处理指向 C++ 中重载成员函数的指针时遇到了一个小问题。以下代码编译正常:
class Foo {
public:
float X() const;
void X(const float x);
float Y() const;
void Y(const float y);
};
void (Foo::*func)(const float) = &Foo::X;
但这不能编译(编译器抱怨重载不明确):
void (Foo::*func)(const float) = (someCondition ? &Foo::X : &Foo::Y);
想必这和编译器将条件运算符的返回值与函数指针类型分开排序有关吧?我可以解决它,但我很想知道规范如何说所有这些都应该起作用,因为它看起来有点不直观,如果有一些方法可以解决它而不会退回到 5 行 if-then-else .
我正在使用 MSVC++,如果这有什么不同的话。
谢谢!
【问题讨论】:
-
您应该指出“不起作用”的含义。编译器错误?意外的运行时行为?
-
已经做到了,谢谢你的建议。
标签: c++ function-pointers conditional-operator