如何在c ++多继承中调用父非虚函数?

问题描述 投票:0回答:1
class VA {
 public:
  virtual void print() = 0;
};
class VB : public VA {
 public:
  virtual void bprint() = 0;
};
class SA : public VA {
 public:
  void print() override { std::cout << "SA" << std::endl; };
};
class SB : public SA, public VB {
 public:
  virtual void bprint() { std::cout << "SB" << std::endl; };
};
int main() {
  SB sb;
  sb.bprint();
  sb.print();
}

调用sb.print()的正确方法是什么?

class SB : public SA, public VB {
 public:
  virtual void bprint() { std::cout << "SB" << std::endl; };
  void print() override { SA::print(); };
};

我知道这种替代方法会起作用,但是我正在考虑是否有一种方法可以使class SB中没有多余的代码?

c++
1个回答
3
投票

似乎您正在尝试使VA成为Java的接口:没有数据,只有某些方法在层次结构中只需实现一次。

简短版本:对VA: public virtual VA使用多重继承。

© www.soinside.com 2019 - 2024. All rights reserved.