如何将此指针与指向成员函数的指针一起使用

问题描述 投票:0回答:2

我有一个函数指针的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);

一切都在建设......

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

c++ function-pointers this-pointer
2个回答
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 const或制作包含(this->*connect_method)(*network, ssid, pass);非const的成员函数。


0
投票

像这样称呼它:

((*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?

© www.soinside.com 2019 - 2024. All rights reserved.