【问题标题】:c++ inner abstract class override. I'm trying to inherit from an abstract class that has an inner abstract classC++ 内部抽象类覆盖。我正在尝试从具有内部抽象类的抽象类继承
【发布时间】:2022-11-29 04:30:47
【问题描述】:

我正在尝试从具有内部抽象类的抽象类继承。 我想通过继承获得以下内容: 一个带有重载方法的继承类,它有一个带有重载方法和附加构造函数的内部类。 类是模板化的

class A {
  void SomeMetod_A() = 0;
  class B {
    void SomeMetod_B() = 0;
  }
}

class C : public A {

How can I overload class B methods and add constructors here?

}

我试图在类 C 中创建一个内部类并从 B 继承它,但这不是 B 的重载

【问题讨论】:

  • 展示你的尝试。我们只能帮助您显示的代码
  • 只有 virtual 方法可以是纯方法 (= 0)。你似乎错过了很多东西。
  • “课程受到诱惑”?!?这个问题中的很多内容表明您发布的代码与有错误的代码几乎没有关系。请阅读minimal reproducible example并提供一个
  • C++ 不是 Java。在另一个范围内定义的类之间没有“所有权”关系(尽管您可能会获得一些其他访问权限)。如果你想继承B,那就继承它。在“有趣,但你可能不想这样做”中,你可以继承两个都A和B同时来自C班。多重继承!
  • this 是什么意思?

标签: c++


【解决方案1】:

这里可以直接继承内部类:

class A {
public:
  virtual void SomeMetod_A() = 0;
  class B {
  public:
    virtual void SomeMetod_B() = 0;
  };
};

class C : public A {
public:
  void SomeMetod_A() override {}

  class BofC : public A::B {
  public:
    void SomeMetod_B() override {};
  };
};

【讨论】:

  • 可能是正确的,但 OP 要求重载方法,而不是重写方法(编辑:除了我刚刚注意到的标题)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-10
  • 1970-01-01
  • 2020-02-29
相关资源
最近更新 更多