繁体   English   中英

引用静态成员函数和继承

[英]Reference to static member function & inheritance

我在C ++程序中使用libuv。 我有两个类,它们是从C继承的A和B。

我用libuv并宣布实例uv_signal_t对C.创建的实例uv_signal_t需要传递一个回调。 我可以轻松地将lambda传递给C函数,以解决对静态成员函数的引用问题:

const int32_t r = uv_signal_start(&this->signal, [](uv_signal_t *handle, int signum){}, SIGABRT);

但是,如何在每个子类上提供回调的不同实现? 理想情况下,我会在C.cpp上实现一些通用代码,并在每个子代上实现其他代码。

更新资料

需要明确的是,我无法更改由libuv定义的回调方法的签名。 我可以编辑libuv的源代码,但是不确定我是否想深入探讨。

我将函数指针添加为类C的属性,并根据需要在派生类上实现它。 这里更多。

我认为您可以在lambda中捕获this指针,并通过此调用虚拟函数。 然后可以在派生类中覆盖虚拟函数。

 const int32_t r = uv_signal_start(&this->signal, [this](uv_signal_t *handle, int signum){ return this->callback(); }, SIGABRT);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM