C ++多重继承防止钻石

时间:2010-02-23 05:10:01

标签: c++ inheritance virtual-inheritance diamond-problem

有没有办法在C ++中定义类Foo 这样

  1. 我可以继承它
  2. 我不能“钻石继承”它
  3. class Cat: public Foo{} // okay
    class Dog: public Foo{} // okay
    class Weird: public Cat, public Dog {} // I want this to throw a compiler error
    

2 个答案:

答案 0 :(得分:6)

Cprogramming.com教程:使用...解决C ++中的钻石问题

http://www.cprogramming.com/tutorial/virtual_inheritance.html

试试这个

对于这种类型的问题可以是避免或通过接口解决。

答案 1 :(得分:1)

另一个信息来源:

http://www.parashift.com/c++-faq-lite/multiple-inheritance.html

实际上,如果使用C ++进行编程,整个C ++常见问题几乎不值得一读。