[英]How to get the address of an overloaded member function?
我正在尝试获取指向特定版本的重载成员 function 的指针。 这是示例:
class C
{
bool f(int) { ... }
bool f(double) { ... }
bool example()
{
// I want to get the "double" version.
typedef bool (C::*MemberFunctionType)(double);
MemberFunctionType pointer = &C::f; // <- Visual C++ complains
}
};
错误消息是“错误 C2440:'initializing': cannot convert from 'overloaded-function' to 'MemberFunctionType'”
如果f
没有重载,则此方法有效,但在上面的示例中则无效。 有什么建议吗?
请注意,上面的代码并没有反映我的实际问题,即我忘记了一个“const”——这就是公认的答案所指出的。 不过,我会保持原样,因为我认为这个问题可能发生在其他人身上。
好吧,我会回答我已经发表的评论,以便可以接受。 问题在于常量:
class C
{
bool f(int) { ... }
bool f(double) const { ... }
bool example()
{
// I want to get the "double" version.
typedef bool (C::*MemberFunctionType)(double) const; // const required!
MemberFunctionType pointer = &C::f;
}
};
澄清:
最初的问题不包含那个const
。 我在评论中做了一个疯狂的猜测,在实际代码中,他是否可能有f
是一个 const 成员 function(因为在更早的迭代中,结果发现还有另一件事缺失/与实际代码不同:p)。 他实际上是一个 const 成员 function,并告诉我应该将其发布为答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.