[英]C++ Overriding Function with Inner Class Argument
我有一个抽象图(示例中的A
)。 它有内部类InnerA
用于其中一个功能。 我想从这个 class 派生一个新的 class (例如B
),并在InnerA
周围制作一个包装器,以添加一个应该在B
中使用的新字段。
class A {
public:
class InnerA {};
virtual void function(InnerA) = 0;
};
class B : public A {
public:
class InnerB : InnerA {
public:
int new_field = 0;
};
void function(InnerB b) override {
b.new_field = 1;
}
};
但是我收到一个错误, B
中的function
无法覆盖基础 function。 实现这一点的正确方法是什么?
error: 'void B::function(B::InnerB)' marked 'override', but does not override
void function(InnerB b) override {
^~~~~~~~
参数类型不同,因此这不是有效的覆盖。
考虑这个 function:
void func(A* a) {
A::InnerA innerA;
a->function(innerA);
}
对于有效的覆盖,这必须是对派生 class function 的有效调用,但事实并非如此。 The derived class function must be able to handle all the calls to the base class function, by having the same arguments and return type.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.