Вопросы по теме 'diamond-problem'
Невозможно решить мою ошибку компилятора наследования алмазов?
Состав
Я создал проблему наследования алмаза. Это выглядит так
Я думал, что достаточно хорошо понял виртуальное наследование, однако теперь я думаю, что я немного не понял его.
Насколько я понимаю, виртуальное наследование указывает...
687 просмотров
schedule
16.11.2021
Clojure - В чем преимущество использования записей перед картами
Мне трудно решить, является ли использование defrecord правильным выбором и, в более широком смысле, если мое использование протоколов в моих записях является семантическим и функциональным.
В моем текущем проекте я создаю игру, в которой есть...
622 просмотров
schedule
19.10.2021
Проблема с алмазом C ++ - как вызвать базовый метод только один раз
Я использую множественное наследование в C ++ и расширяю базовые методы, явно вызывая их базовые методы. Предположим следующую иерархию:
Creature
/ \
Swimmer Flier
\ /
Duck
Что соответствует
class...
4828 просмотров
schedule
26.02.2022
С++ Виртуальное/невиртуальное наследование 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 просмотров
schedule
29.03.2022
Виртуальный класс в алмазном наследовании
Насколько я понимаю, использование virtual подавляет конструктор базового класса и, следовательно, позволяет избежать создания экземпляров нескольких объектов базового класса.
Если конструктор обоих производных классов подавлен, как создается...
46 просмотров
schedule
08.04.2022
Алмазное наследование с шаблонным базовым классом: Base ‹Derived›
У меня проблема с алмазом при наследовании от шаблонного базового класса, который принимает класс Derived в качестве аргумента шаблона.
Обычно эта проблема решается с помощью виртуального наследования следующим образом:
class Base0
{...
37 просмотров
schedule
23.04.2022
Множественное наследование С++ - почему вы не работаете?
Я пытаюсь выяснить интересную проблему множественного наследования.
Дед и дедушка — это интерфейсный класс с несколькими методами:
class A
{
public:
virtual int foo() = 0;
virtual int bar() = 0;
};
Затем идут абстрактные классы,...
1276 просмотров
schedule
06.05.2022
Множественное наследование без виртуальных функций в С++
Я столкнулся с проблемой бриллианта и нашел разные решения для разных случаев с одним бриллиантом. Однако я не смог найти решение для «цепных» бриллиантов.
Согласно структуре: да, я хочу каждый раз иметь несколько базовых классов, поэтому...
564 просмотров
schedule
14.05.2022
Каков правильный подход к обмену и копированию идиомы в виртуальном наследовании?
Рассмотрим классическую алмазную иерархию виртуального наследования. Мне интересно узнать, какова правильная реализация идиомы копирования и обмена в такой иерархии.
Пример немного искусственный и не очень умный, так как он будет хорошо...
2449 просмотров
schedule
17.05.2022
В задаче с бриллиантами в С++, зачем нам вызывать конструктор 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 просмотров
schedule
13.06.2022
Почему декларация об использовании не работает для решения проблемы алмаза?
Пожалуйста, рассмотрите следующий код:
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 просмотров
schedule
19.07.2022
Почему «виртуальное» наследование не является поведением по умолчанию?
Я понимаю необходимость использования виртуального ключевого слова при наследовании от базовых классов, чтобы избежать проблем неоднозначности, связанных с наследованием алмазов.
Но мой вопрос в том, почему это не поведение по умолчанию в С++ при...
502 просмотров
schedule
08.09.2022
Конструктор самого низкого базового класса 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 просмотров
schedule
21.09.2022
Алмазное наследование со смешанными модификаторами наследования (защищенное/частное/общедоступное)
скажем, у нас есть 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 просмотров
schedule
05.11.2022
Почему для объяснения проблемы множественного наследования Java используется случай с ромбом и его общим предком, а не два несвязанных родительских класса?
Этот вопрос может показаться странным для любителей Java, но если вы попытаетесь объяснить это, будет здорово.
В эти дни я проясняю некоторые из самых основных концепций Java. Итак, я перехожу к теме Наследование и интерфейс Java.
Читая это, я...
3607 просмотров
schedule
07.12.2022
Преодоление алмазной двусмысленности по-другому
Я знаю проблему алмаза и способ ее решения с использованием виртуального базового класса. Я пытался решить проблему с бриллиантом другим способом, но безуспешно. Я не знаю почему.
#include <iostream>
using namespace std;
class A
{...
134 просмотров
schedule
22.10.2022
Python вызывает базовый класс, используя super vs static
Куда бы я ни посмотрел, все продолжают говорить, какой классный super(). Но я склоняюсь к тому, чтобы не использовать super(), потому что это делает все намного сложнее, чем хотелось бы. Я видел несколько популярных примеров использования super(),...
909 просмотров
schedule
23.12.2022
Вам нужно вызвать конструктор виртуального базового класса из всех производных классов? Даже если они не самые производные?
У меня проблемы с множественным наследованием и проблемой алмазов.
Проблема возникает из-за того, что моему конструктору базового класса требуется параметр. Компилятор пытается сгенерировать конструктор по умолчанию для двух моих абстрактных...
1128 просмотров
schedule
19.03.2023