如何将这个指针与成员函数的指针一起使用

时间:2019-04-20 00:08:31

标签: c++ function-pointers this-pointer

我对函数指针使用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);

所有人都在建造...

如何在不创建对象的情况下调用该方法,因为我已经有一个对象(此指针)

2 个答案:

答案 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?