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
中没有多余的代码?
似乎您正在尝试使VA
成为Java的接口:没有数据,只有某些方法在层次结构中只需实现一次。
简短版本:对VA
:: public virtual VA
使用多重继承。