我有一个函数指针的typedef:
typedef bool(WlanApiWrapper::* (connect_func) )(WLAN_AVAILABLE_NETWORK, const char *, const char *);
并有一个返回指向函数的指针的方法:
const auto connect_method = map_algorithm_to_method(*network)
所以我想这样称呼:
(*this.*connect_method)(*network, ssid, pass);
但得到错误:
Error (active) E0315 the object has type qualifiers that are not compatible with the member function CppWlanHack C:\Projects\CppWlanHack\CppWlanHack\WlanApiWrapper.cpp 52
但当我这样称呼时:
WlanApiWrapper f;
(f.*connect_method)(*network, ssid, pass);
一切都在建设......
如何在不创建对象的情况下调用该方法,因为我已经有了一个对象(这个指针)
错误消息听起来像是在const成员函数中调用非const成员函数指针。 this
是一个const成员函数内的const WlanApiWrapper *
所以the object (*this) has type qualifiers (const) that are not compatible with the (non-const) member function
。
要解决这个问题,你可以制作connect_method
const或制作包含(this->*connect_method)(*network, ssid, pass);
非const的成员函数。
像这样称呼它:
((*this).*connect_method)(*network, ssid, pass);
这适用于所有编译器。
有关更多信息,请阅读C ++ FAQ中的How can I avoid syntax errors when calling a member function using a pointer-to-member-function?