【发布时间】:2021-04-22 04:39:01
【问题描述】:
我的目标是让一个类继承自 C++ 中的另一个类,并以相同的方式重载所有父类方法。
因此,当调用方法时,会运行一些代码,调用原始方法并在派生类重载方法中运行更多代码。
class Base
{
Base() {}
~Base() {}
void base_method()
{
// Does something.
}
}
template<class T>
class ClassWrapper : public T
{
public:
ClassWrapper(T base) : T( base ) {}
~ClassWrapper() {}
void wrap_function()
{
// multithread block {
// call base method within multithread block.
this->base_method();
// }
}
}
int main()
{
Base B;
ClassWrapper<Base> C( B );
C.base_method();
return 0;
}
理想情况下,对基类一无所知,但它的所有方法都可以被覆盖。
我不确定这是否可能,但如果有任何建议会很棒!
【问题讨论】:
-
为什么不简单地
T().base_method()?或者您在寻找CRTP? -
这不是简单地调用基本方法本身而没有在多线程环境中调用它所必需的代码吗?而且它是通用的,因此任何类的任何方法都可以以类似的方式包装
-
哪个基类?
-
我不太确定你在问什么。听起来您正在尝试创建一个类,该类根据模板参数确定要覆盖其父类型的哪个成员?
-
看这里:stackoverflow.com/a/48408987/1463922 使用操作符-> 或许有可能
标签: c++ inheritance operator-overloading wrapper