我对函数指针使用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);
所有人都在建造...
如何在不创建对象的情况下调用该方法,因为我已经有一个对象(此指针)
答案 0 :(得分:1)
错误消息听起来像是您在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
常量或使包含(this->*connect_method)(*network, ssid, pass);
非常量的成员函数。
答案 1 :(得分:0)
这样称呼它:
((*this).*connect_method)(*network, ssid, pass);
这应该适用于所有编译器。
有关更多信息,请阅读C ++常见问题解答中的How can I avoid syntax errors when calling a member function using a pointer-to-member-function?