-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