【发布时间】:2018-07-25 06:40:23
【问题描述】:
我在引用 MyClass 类的成员函数时遇到问题。请将此抽象视为我的问题。
class MyClass {
public:
DWORD fun_32(_In_ DWORD64 a64bitparam); //wants DWORD64 returns DWORD
DWORD64 fun_64(_In_ DWORD64 a64bitparam); //wants DWORD64 returns DWORD64
DWORD64 fun(_In_ DWORD64 a64bitparam);
private:
BOOLEAN use64;
};
fun(DWORD64) 实现:
DWORD64 MyClass::fun(DWORD64 a64bitparam) {
std::function<DWORD64(DWORD64)> myReference;
myReference = this->use64 ? &MyClass::fun_64 : &MyClass::fun_32;
}
该示例无法编译为“操作数类型不兼容”。不知何故,程序无法将DWORD 转换为DWORD64。
但是,这个可以,但看起来很丑。 (海事组织)
std::function<DWORD64(DWORD64)> myReference;
myReference = [this](DWORD64 a) -> DWORD64 { return use64 ? fun_64(a) : fun_32(a);};
有人可以简要解释一下我在方法参考方面做错了什么吗?
【问题讨论】:
-
成员函数需要一个对象来调用它们。您要么需要制作静态来解决此问题,要么使用 lambda 或
std::bind将对象绑定到函数。 -
@NathanOliver:回答部分...
-
@LightnessRacesinOrbit 是的,我认为有一个骗子,所以我发表了评论,然后去寻找骗子
-
如果您认为存在欺骗,则根本不提供答案的标准回应,更不用说在错误的地方这样做了
标签: c++ winapi functional-programming