在 C++ 中,可以通过从私有实例化 class 调用方法而不重新实现它来覆盖虚拟方法吗?

Can in C++ override a virtual method by calling a method from a private instantiated class without reimplementing it?

抱歉更新了

我有一个 class A 覆盖了另一个 class B 的许多方法,在它旁边有一个 class B 的实例,我希望从中调用这些方法。 B 是一个带有虚方法的接口,所以它有一个通过指针传递给我的实现 IE。 class乙

class B{
public:
  virtual int f1(int x);
  virtual int f2(int x)
}

然后我有其他 classes 实现了 B,比方说 C、D 和 E,它们也有其他接口。

然后我有 class A,它有一个指向 class 的指针,除此之外还实现了 B。

我需要像下面这样重写这些方法

和class一个

class A:
  public B
{
private:
  B* b;
public:
  A(B* _b){
    b = _b;
  }
  int f1(int x) override
  {
    return b->f1(x);
  }
      
  int f2(int y) override
  {
    return b->f2(y);
  }
}

是否可以通过允许编译器从实现中调用方法来避免覆盖每个方法?

如果你想在成员变量上调用f1()f2(),那就不行。没有自动机制告诉编译器应该将对 A::f1() 的调用转发给 b->f1().