C ++ множественное наследование, предотвращающее алмаз - PullRequest
14 голосов
/ 23 февраля 2010

Есть ли способ определить класс Foo в C ++ так что

  1. Я могу наследовать от него
  2. Я не могу "наследовать алмаз" от него

1009 * Т.е. *

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 ]

6 голосов
/ 23 февраля 2010

Учебник Cprogramming.com: Решение проблемы с бриллиантами в C ++ с ...

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

Попробуйте это

Для этого типа проблемы можно избежать или решить с помощью интерфейса.

1 голос
/ 23 февраля 2010

Другой источник информации:

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

На самом деле весь FAQ по C ++ действительно стоит прочитать, если вы программируете на C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...