У меня есть абстрактный класс AUnit с переменными и геттерами/сеттерами в виртуальном чистом, как этотC++ защищенного наследия
class AUnit {int var... int getVar() const = 0 ... }
Всех данные в защищенном: кроме конструктора и деструктора.
У меня есть Берсерк и Танк, как ребенок, как этот
class Berserk : public AUnit
{
...
private:
int getVar() const;
В их .cpp, я пишу код геттеры и сеттеры. Ничего особенного.
Но у меня есть еще один класс (Foo, например), как это
class Foo : public Berserk, public Tank
, которым необходимо получить доступ к данным в Берсерк или танк, поэтому я изменил частный ключевое слово по защищаемой, здесь ошибка:
Как во-первых, я просто попытался получить доступ к данным с помощью AUnit getter, но стал причиной виртуальных чистых и абстрактных понятий, я думал, что reinterpret_cast мой AUnit в его реальном типе после передачи getType AUnit в нечистых и публичных , Все еще не работает, его схема, о которой я вам говорил ранее.
Это просто классическое наследие, могу ли я помочь?
В классе 'Foo: public Berserk, public Tank'' Я предполагаю, что вы имеете в виду частный, не так ли? – hivert
Можете ли вы «объяснить» немного больше? Я не уверен, что понимаю ваш «вопрос» и ваше видение проблемы. – Khelben
Звучит как [алмаз смерти] (http://en.wikipedia.org/wiki/Multiple_inheritance#The_diamond_problem) для меня. – reima