Описание тега diamond-problem

В объектно-ориентированных языках программирования с множественным наследованием и организацией знаний проблема ромба - это неоднозначность, которая возникает, когда два класса B и C наследуются от A, а класс D наследуется от B и C.
3 ответа

Почему одного виртуального наследования недостаточно для решения проблемы страшного алмаза?

struct B { int i; }; struct D1 : virtual B {}; struct D2 : B {}; // <-- not virtual struct DD : D1, D2 {}; Закодировав выше, еще требует компилятор D2 также быть virtual: DD d; d.i = 0; // error: request for member `i' is ambiguous Что я не поним…
1 ответ

Завершить Виртуальное наследование

В моем коде у меня есть базовый ромбовидный узор: CommonBase / \ / \ DerivedA DerivedB \ / \ / Joined Это реализовано следующим образом: общий базовый класс имеет конструктор по умолчанию и конструктор, принимающий параметр: struct CommonBase { Comm…
17 дек '18 в 11:47
2 ответа

Избегайте неоднозначности, вызванной множественным наследованием, используя разрешение области видимости

Вот пример множественного наследования. Я использовал оператор разрешения области видимости для разрешения неоднозначности вместо виртуального класса. struct A { int i; }; struct B : A {}; struct C : A {}; struct D: B, C { void f() { B::i = 10; } vo…
1 ответ

C++ наследование нескольких бриллиантов и чисто виртуальные функции

Рассмотрим следующую архитектуру: class A //abstract interface { public: virtual void f() = 0; }; class AA : public A //abstract interface { public: virtual void g() = 0; }; class AAA : public AA //abstract interface { public: virtual void h() = 0; …
0 ответов

Будет ли этот код множественного наследования работать со всем компилятором?

У меня есть этот код, который отлично работает при компиляции с Visual Studio. #include "stdafx.h" class base { public: virtual void FOO() = 0; }; class D1:public base { public: virtual void bar() =0; }; class D2:public base { public: virtual void m…
01 авг '17 в 05:43
3 ответа

C++ виртуальная разница наследования

Дано два класса с общим виртуальным базовым классом: class Base {}; class Derived1 : public virtual Base {}; class Derived2 : public virtual Base {}; Есть ли разница между этими двумя производными классами?: class Derived3 : public virtual Base, pub…
24 авг '16 в 14:27
4 ответа

Несколько экземпляров подобъекта виртуального базового класса (действительно) - нет?

Учитывая код: #include <cassert> struct X {}; struct Y1: virtual X {}; struct Y2: virtual X {}; struct Y3: virtual X {}; struct Y4: virtual X {}; struct Z1: Y1, Y2 {}; struct Z2: Y3, Y4 {}; struct XYZ: Z1, Z2 {}; int main() { XYZ xyz; X *x1 = …
24 янв '12 в 20:44
0 ответов

Множественное наследование - избежать из-за алмазной пробы?

Это часто возникает у меня: у меня есть класс A, который расширен классом B, а затем есть классы, которые являются производными либо от класса A, либо от обоих (множественное наследование). Пример: у меня есть объект, представляющий математическую м…
7 ответов

Как интерфейсы решают алмаз-проб

Мне нужно обсудить одну вещь с вами. Я читал об интерфейсе, что это контракт между классом и интерфейсом, что класс будет обеспечивать реализацию всех методов интерфейса. Чтобы решить знаменитую проблему с бриллиантами, у нас есть интерфейсы. Как (я…
27 авг '12 в 09:55
1 ответ

Правильно ли предположить, что наследование алмазов нарушает инкапсуляцию в C++?

Посмотрите на следующий код: class Base { int a; public: Base(int b){a =b;} }; class M1: public virtual Base{ public: M1(int a): Base(a+10){} // Expect a is increased by 10 }; class M2: public virtual Base{ public: M1(int a): Base(a+20){} // Expect …
04 апр '17 в 10:04
4 ответа

Доступ к отдельным классам производного класса, производного от двух одинаковых базовых классов

У меня есть базовый класс под названием Number, Учебный класс One а также Two получены из Number, Теперь я определяю другой класс Threeгде мне нужно получить доступ к отдельным базовым классам из множественного наследования: class Number{ protected:…
02 апр '13 в 13:07
0 ответов

Алмазное наследование без RTTI

Я проектирую объектную систему, в которой все мои объекты происходят из общего базового класса. Помимо объектов, у меня есть определенные интерфейсы, которые я хочу, чтобы объекты реализовали. Некоторые объекты происходят из нескольких классов. Я за…
27 май '17 в 16:38
16 ответов

Многократное наследование Java

В попытке полностью понять, как решить проблемы множественного наследования в Java, у меня есть классический вопрос, который мне нужно прояснить. Допустим, у меня есть класс Animal это имеет подклассы Bird а также Horse и мне нужно сделать класс Peg…
4 ответа

Почему Java не поддерживает множественное наследование, хотя все методы Java по умолчанию являются виртуальными?

Почему Java не поддерживает множественное наследование, хотя все методы java являются виртуальными по умолчанию? Почему проблема алмазов может возникнуть в Java?
25 окт '13 в 09:14
2 ответа

Флора-2 алмазное наследование

Флора-2 - эксцентричный язык, и я знаю, что это длинный путь, но я не нашел активных ресурсов, посвященных этому, поэтому я пытаюсь здесь. Это так популярно... для него нет тега stackru. Если вы знаете что-нибудь о состоянии и будущем Flora-2 и XSB …
1 ответ

Смертельный алмаз смерти в Кок

Я пытаюсь создать довольно простую иерархию типов. Вот минимальный рабочий пример: Record R0 : Type := { R0_S :> Type }. Record R1 : Type := { R1_S : Type; op1 : R1_S -> R1_S }. Record R2 : Type := { R2_S : Type; op2 : R2_S -> R2_S }. Recor…
1 ответ

Общая библиотека: государственная и алмазная

Допустим, у меня есть приложение, которое вызывает библиотеки liba.so и libb.so. Обе эти библиотеки ссылаются на libc.so. Если licc.so хранит некоторую информацию о состоянии, будет ли это состояние одинаковым для liba.so и libb.so? Если да, есть ли…
21 май '15 в 13:44
3 ответа

В C++ статические функции-члены наследуются? Если да, то почему не возникает ошибка неоднозначности?

Я только начинаю с gnu-cpp и хотел бы помочь. Я столкнулся с ошибкой неоднозначности во время чтения, и во время самостоятельного изучения я натолкнулся на мысль, что неоднозначная проблема с алмазом должна также затрагивать статические методы класс…
19 фев '18 в 11:26
1 ответ

Как проблема с бриллиантами в oops решается с помощью "общей" стратегии?

Проблема с бриллиантом решается в некоторых языках OOPS (например, curl), имея повторно унаследованный класс как "общий"? Я хочу знать, как это работает. Кроме того, я хочу знать роль первичных и вторичных конструкторов в решении проблемы алмазов на…
13 ноя '18 в 20:19
0 ответов

Модель Diamond и JPA: как я могу хранить или читать?

Я хотел бы знать, возможно ли использовать каскадный режим с JPA для хранения в базе данных модели Diamond. Модель бриллианта: Up / \ Лево право \ / Down Up содержит два списка: один справа и один слева Справа и слева содержится список вниз. Для баз…
11 апр '11 в 16:23