【发布时间】:2022-11-24 17:27:17
【问题描述】:
这是一个不断发展的代码的真实故事。我们从许多基于这种结构的类开始:
class Base
{
public:
virtual void doSomething() {}
};
class Derived : public Base
{
public:
void doSomething() override
{
Base::doSomething(); // Do the basics
// Do other derived things
}
};
有一次,我们需要一个介于 Base 和 Derived 之间的类:
class Base;
class Between : public Base;
class Derived : public Between;
为了保持结构,Between::doSomething() 首先调用 Base。
但是现在必须将Derived::doSomething()更改为调用Between::doSomething()...
这适用于 Derived 的所有方法,需要搜索和替换许多调用。
最好的解决方案是拥有一些 this->std::direct_parent 机制来避免所有替换并允许轻松管理类拓扑。
当然,这应该只有在有一个直接父级时才能编译。
有什么办法可以做到这一点?如果不是,这可能是 C++ 委员会的功能请求吗?
【问题讨论】:
-
这不是标准的,但 MSVC 为此支持
__super关键字。请参阅:learn.microsoft.com/en-us/cpp/cpp/super?view=msvc-170。
标签: c++ inheritance