引用静态成员函数和继承

Reference to static member function & inheritance

我在 C++ 程序中使用 libuv。我有两个 class 继承自 C 的 A 和 B。

我使用 libuv 并在 C 上声明了 uv_signal_t 的实例。创建 uv_signal_t 的实例需要传递回调。我可以轻松地将 lambda 传递给 C 函数来解决引用静态成员函数的问题:

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

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

上实现附加代码

更新

明确地说,我无法更改回调方法的签名,因为它是由 libuv 定义的。我可以编辑 libuv 的源代码,但我不确定我是否想深入了解。

我想你可以在 lambda 中捕获 this 指针,并通过它调用虚函数。可以在derived中重写虚函数类 then.

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

我将向我的 class C 添加一个函数指针作为 属性,并根据需要在派生的 classes 上实现它。更多 here.