繁体   English   中英

C++ 用内部 Class 参数覆盖 Function

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM