-1
如何使用实例化类的成员函数作为函数指针?C++ |如何使用成员函数作为函数指针
BEFORE:
main.cpp :
void packetShower(data_t const& data) {
// showing so data
}
....
// called with :
std::shared_ptr<Net::ARawSocket> rawSock = std::make_shared<Net::LinuxRawSocket>(packetShower);
和它运行良好。 的packetShower
功能是一个简单的静态方法为我main.cpp
NOW:
我有一个实例化类Instance
与packetShower
实例函数
namespace App {
class Instance {
public:
Instance() = default;
~Instance() = default;
int run(int ac, char *av[]);
private:
void init();
void packetShower(data_t const& data)
};
}
,在我run()
方法,我尝试创建一个函数指针我的packetShower
功能:
namespace App {
void Instance::init() {
...
}
void Instance::packetShower(data_t const& data) {
.....
}
int Instance::run(int argc, char** argv) {
init();
// and I tried :
void (Instance::*shower)(data_t const& data) = &Instance::packetShower;
std::shared_ptr<Net::ARawSocket> rawSock = std::make_shared<Net::LinuxRawSocket>(shower);
// but It generate a big error
}
}
任何想法我可以做到这一点?
谢谢!
'Net :: LinuxRawSocket' ctor接受哪种类型? – Slava
我得到的错误是:'没有匹配函数调用'Net :: LinuxRawSocket :: LinuxRawSocket(void(App :: Instance :: **)(const std :: vector&))'' 但正如我所说,这样做的“之前”的方式与一个func指针,但现在我尝试用一个实例成员的func指针来做到这一点 –
F4Ke
你能阅读和理解我的问题吗?我可以重述它。你能提供在Net :: LinuxRawSocket构造函数中被接受为回调的类型的定义吗? – Slava