Вопросы по теме 'diamond-problem'

Невозможно решить мою ошибку компилятора наследования алмазов?
Состав Я создал проблему наследования алмаза. Это выглядит так Я думал, что достаточно хорошо понял виртуальное наследование, однако теперь я думаю, что я немного не понял его. Насколько я понимаю, виртуальное наследование указывает...
687 просмотров

Clojure - В чем преимущество использования записей перед картами
Мне трудно решить, является ли использование defrecord правильным выбором и, в более широком смысле, если мое использование протоколов в моих записях является семантическим и функциональным. В моем текущем проекте я создаю игру, в которой есть...
622 просмотров

Проблема с алмазом C ++ - как вызвать базовый метод только один раз
Я использую множественное наследование в C ++ и расширяю базовые методы, явно вызывая их базовые методы. Предположим следующую иерархию: Creature / \ Swimmer Flier \ / Duck Что соответствует class...
4828 просмотров

С++ Виртуальное/невиртуальное наследование Diamond
Учитывая следующий код на C++: struct A { A() { f(0); } A(int i) { f(i); } virtual void f(int i) { cout << i; } }; struct B1 : virtual A { B1(int i) : A(i) { f(i); } virtual void f(int i) { cout << i+10; } }; struct...
115 просмотров

Виртуальный класс в алмазном наследовании
Насколько я понимаю, использование virtual подавляет конструктор базового класса и, следовательно, позволяет избежать создания экземпляров нескольких объектов базового класса. Если конструктор обоих производных классов подавлен, как создается...
46 просмотров

Алмазное наследование с шаблонным базовым классом: Base ‹Derived›
У меня проблема с алмазом при наследовании от шаблонного базового класса, который принимает класс Derived в качестве аргумента шаблона. Обычно эта проблема решается с помощью виртуального наследования следующим образом: class Base0 {...
37 просмотров

Множественное наследование С++ - почему вы не работаете?
Я пытаюсь выяснить интересную проблему множественного наследования. Дед и дедушка — это интерфейсный класс с несколькими методами: class A { public: virtual int foo() = 0; virtual int bar() = 0; }; Затем идут абстрактные классы,...
1276 просмотров

Множественное наследование без виртуальных функций в С++
Я столкнулся с проблемой бриллианта и нашел разные решения для разных случаев с одним бриллиантом. Однако я не смог найти решение для «цепных» бриллиантов. Согласно структуре: да, я хочу каждый раз иметь несколько базовых классов, поэтому...
564 просмотров
schedule 14.05.2022

Каков правильный подход к обмену и копированию идиомы в виртуальном наследовании?
Рассмотрим классическую алмазную иерархию виртуального наследования. Мне интересно узнать, какова правильная реализация идиомы копирования и обмена в такой иерархии. Пример немного искусственный и не очень умный, так как он будет хорошо...
2449 просмотров

В задаче с бриллиантами в С++, зачем нам вызывать конструктор grand_parent из дочернего класса?
Пожалуйста, прочитайте код, чтобы понять ситуацию. #include <iostream> using namespace std; class one { protected: int x; public: one(int a) { x=a; cout << "one cons called\n"; } void display(void)...
1064 просмотров

Почему декларация об использовании не работает для решения проблемы алмаза?
Пожалуйста, рассмотрите следующий код: struct A { void f() { } }; struct B1 : A { }; struct B2 : A { }; struct C : B1, B2 { void f() // works { B1::f(); } //using B1::f; // does not work //using B1::A::f;...
3443 просмотров

Почему «виртуальное» наследование не является поведением по умолчанию?
Я понимаю необходимость использования виртуального ключевого слова при наследовании от базовых классов, чтобы избежать проблем неоднозначности, связанных с наследованием алмазов. Но мой вопрос в том, почему это не поведение по умолчанию в С++ при...
502 просмотров

Конструктор самого низкого базового класса Diamond Inheritance
Код выглядит следующим образом: Код : #include <iostream> using namespace std; class Animal{ int a; public: Animal(int a) : a(a){} int geta(){return a;} }; class Bird : virtual public Animal{ string b;...
2721 просмотров
schedule 21.09.2022

Ромбовидное и треугольное наследование
Мой вопрос такой же, как и этот старый, но я еще не понимаю полученный ответ: Diamond Problem В задаче о алмазе D наследуется от B и C, которые оба наследуют от A, и B и C переопределяют метод foo в A. Предположим вместо этого треугольник: нет...
315 просмотров

Алмазное наследование со смешанными модификаторами наследования (защищенное/частное/общедоступное)
скажем, у нас есть class A,B,C,D , где A — основание, B, C — между ними, а D получено в модели алмаза. ПРИМЕЧАНИЕ. class B наследует виртуально class A в частном режиме, class C наследует виртуальный class A в защищенном...
649 просмотров
schedule 09.03.2023

Виртуальные методы расширения в предстоящем выпуске Java 8
Когда я вижу такие фрагменты кода, как interface A { void a(); void b() default { System.out.println("b"); }; void c() final { System.out.println("c"); }; } У меня есть один вопрос. Разве у нас уже недостаточно дерьма...
3790 просмотров

Почему для объяснения проблемы множественного наследования Java используется случай с ромбом и его общим предком, а не два несвязанных родительских класса?
Этот вопрос может показаться странным для любителей Java, но если вы попытаетесь объяснить это, будет здорово. В эти дни я проясняю некоторые из самых основных концепций Java. Итак, я перехожу к теме Наследование и интерфейс Java. Читая это, я...
3607 просмотров

Преодоление алмазной двусмысленности по-другому
Я знаю проблему алмаза и способ ее решения с использованием виртуального базового класса. Я пытался решить проблему с бриллиантом другим способом, но безуспешно. Я не знаю почему. #include <iostream> using namespace std; class A {...
134 просмотров

Python вызывает базовый класс, используя super vs static
Куда бы я ни посмотрел, все продолжают говорить, какой классный super(). Но я склоняюсь к тому, чтобы не использовать super(), потому что это делает все намного сложнее, чем хотелось бы. Я видел несколько популярных примеров использования super(),...
909 просмотров
schedule 23.12.2022

Вам нужно вызвать конструктор виртуального базового класса из всех производных классов? Даже если они не самые производные?
У меня проблемы с множественным наследованием и проблемой алмазов. Проблема возникает из-за того, что моему конструктору базового класса требуется параметр. Компилятор пытается сгенерировать конструктор по умолчанию для двух моих абстрактных...
1128 просмотров