我正在尝试为遗留继承层次结构创建一个包装类,它不是严格意义上的多态。在包装类中,我为一些方法添加了额外的功能,但对于许多其他方法,我只想调用包装类方法。
这里代替
wrapper->operator()([](Derived& x)
{
x.print();
});
或
wrapper->operator->()->print();
有什么办法可以让我拥有
wrapper->print();
提前感谢您的回答..
最佳答案
你的问题是你实际上使用了指针。
目前,而不是
wrapper->operator->()->print();
你可能会写
(*wrapper)->print();
如果你替换不需要的指针
wrap<Derived> *wrapper = new wrap<Derived>(der);
通过
wrap<Derived> wrapper(der);
然后,你可以替换
wrapper->operator->()->print();
通过
wrapper->print();
// or wrapper.operator->()->print(); :)
同样的道理
wrapper->operator()([](Derived& x)
{
x.print();
});
会变成
wrapper(([](Derived& x)
{
x.print();
});
关于C++ 通用包装器类,它为某些函数添加了额外的处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51519082/