Лучшие virtual-inheritance вопросы ИТ разработчиков

  • 12 голосов
  • 4 ответа
  • 0 просмотров
4 ответа

Для устранения неоднозначности используется виртуальное наследование.

ел это на веб-сайте, читая о виртуальном наследовании в C ++ Когда используется множественное наследование, иногда необходимо использовать виртуальное наследование. Хорошим примером для этого является стандартная иерархия классов ...

Задан 03 Mar 2011, 11:02 от Vijay
  • 11 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Обойти это примерно так:

я есть алмазная иерархия классов: A / \ B C \ / DЧтобы избежать двух копий A в D, нам нужно использовать виртуальное наследование в B и C. class A { }; class B: virtual public A {}; class C: virtual public A { }; class D: public B, public C { ...

Задан 02 Mar 2011, 10:39 от bjskishore123
  • 13 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Унаследовать от нескольких частичных реализаций абстрактного базового класса?

Можно ли иметь рядpartial implementations абстрактного интерфейса, а затемcollect эти частичные реализации вsingle concrete class используя множественное нас...

Задан 26 Jul 2012, 05:30 от curiousguySteve Lorimer
  • 23 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

, Попробуй.

уstatic_cast не может опуститься с виртуальной базы? struct A {}; struct B : public virtual A {}; struct C : public virtual A {}; struct D : public B, public C {}; int main() { D d; A& a = d; D* p = static_cast<D*>(&a); //error }g ++ 4.5 ...

Задан 18 May 2011, 12:18 от log0
  • 12 голосов
  • 6 ответов
  • 0 просмотров
6 ответов

Например, это позволяет, и они могут быть весьма полезными.

я есть базовый класс и производный, и я хочу изменить базовые функции, сохраняя их статическими, так как они должны быть переданы другим функциям как статические. Как я могу это сделать?

Задан 09 Jun 2011, 10:08 от fank
  • 13 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

C ++ абстрактные конструкторы / деструкторы базового класса - общая корректность

Недавно я стал тупым разработчиком, поэтому я сделал решающий шаг, получил книгу по С ++ и научился правильно делать вещи. В моей голове я знаю, что я хотел бы сделать. Я действительно хочуInterface что при наследовании должен быть переопределен ...

Задан 14 Dec 2011, 23:53 от Stuart Blackler
  • 8 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Исключить повторяющиеся записи из аргументов шаблона C ++ 11

Я использую шаблоны с множественным виртуальным наследованием в C ++ для объединения типов в единое определение структуры. Вот примерный набор структур: struct meas { int i; }; struct meas2 : public virtual meas { int j; }; struct meas3 : ...

Задан 11 Dec 2012, 19:43 от Devin Lane
  • 5 голосов
  • 5 ответов
  • 0 просмотров
5 ответов

Размеры классов с виртуальным наследованием в C ++

#include<iostream> using namespace std; class abc { int a; }; class xyz : public virtual abc { int b; }; int main() { abc obj; xyz obj1; cout<<endl<<sizeof(obj); cout<<endl<<sizeof(obj1); return 0; }Ответы будут зависеть от компилятора, но ...

Задан 12 Nov 2011, 16:41 от nikhil
  • 9 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

@atoMerz Переписан ответ.

имаю необходимость виртуального наследования при использовании множественного наследования - это решает проблему Dreaded Diamond. Но что, если я не использую множественное наследование?Есть ли необходимость в виртуальном наследовании ...

Задан 03 May 2011, 18:55 от Tim
  • 8 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

Сила, исходящая из класса виртуально

У нас есть специальная структура для интерфейсов в нашем проекте, и часть требований состоит в том, что классы, которые представляют интерфейс, могут использоваться только как виртуальные базовые классы, а не как не виртуальные. Есть ли способ ...

Задан 09 May 2013, 07:16 от Angew
  • 5 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

C ++ Виртуальное наследование памяти

Макеты памяти виртуального наследованияЯ пытаюсь полностью понять, что происходит под капотом в памяти с виртуальным наследованием и vTables / vPtrs, а что н...

Задан 16 Jun 2015, 14:09 от Dominic Farolino
  • 8 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Чистый Виртуальный Класс и Коллекции (вектор?)

Я работаю над графическим приложением, которое довольно широко использует виртуальные классы. Она имеет:Класс рисунка, который по сути представляет собой наб...

Задан 07 Mar 2010, 00:00 от the_gastropod
  • 21 голос
  • 3 ответа
  • 0 просмотров
3 ответа

c ++ виртуальное наследование

Проблема: class Base { public: Base(Base* pParent); /* implements basic stuff */ }; class A : virtual public Base { public: A(A* pParent) : Base(pParent) {} /* ... */ }; class B : virtual public Base { public: B(B* pParent) : Base(pParent) {} /* ...

Задан 24 Jan 2010, 09:03 от Robert
  • 2 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

Виртуальное наследование и пустой vtable в базовом классе

Вот этот код: #include <iostream> class Base { int x; }; class Derived : virtual public Base { int y; }; int main() { std::cout << sizeof(Derived) << std::endl; // prints 12 return 0; }Я читал, что когда какой-то класс виртуально наследуется, ...

Задан 28 Jan 2012, 19:51 от scdmb
  • 8 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

Сила, исходящая из класса виртуально

У нас есть специальная структура для интерфейсов в нашем проекте, и часть требований состоит в том, что классы, которые представляют интерфейс, могут использ...

Задан 09 May 2013, 05:16 от Angew
  • 6 голосов
  • 5 ответов
  • 0 просмотров
5 ответов

C ++ множественное виртуальное наследование против COM

Сеть переполнена объяснениями&quot;проблема страшного алмаза&quot;, Так же как и StackOverflow. Я думаю, что понимаю это немного, но я не могу перевести это ...

Задан 18 Nov 2008, 17:58 от Adam
  • 22 голосов
  • 5 ответов
  • 0 просмотров
5 ответов

Не беспокойтесь о производительности, компилятор не дублирует код для методов.

омпиляторы реализуют виртуальное наследование? В следующем коде: class A { public: A(int) {} }; class B : public virtual A { public: B() : A(1) {} }; class C : public B { public: C() : A(3), B() {} };Генерирует ли компилятор два ...

Задан 09 Sep 2011, 11:08 от MKo
  • 69 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Почему конструктор Default вызывается в виртуальном наследовании?

Я не понимаю, почему в следующем коде, когда я создаю экземпляр объекта типаdaughter, по умолчаниюgrandmother() конструктор называется? Я думал, что либоgrandmother(int) конструктор должен быть вызван (чтобы следовать спецификации моегоmother ...

Задан 28 Mar 2012, 12:42 от Simon Desfarges
  • 16 голосов
  • 5 ответов
  • 0 просмотров
5 ответов

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

аюсь разобраться в утверждении в книге эффективно C ++. Ниже приведена схема наследования для множественного наследования. Теперь в книге говорится, что для каждого vptr требуется отдельная память в каждом классе. Также это делает следующее ...

Задан 16 Apr 2011, 04:58 от Xinus
  • 7 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

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

в следующем коде: class A { public: int x; A(int x):x(x){} }; class B: public virtual A { public: B(int x):A(x){} }; class C: public virtual A { public: C(int x):A(x){} }; class D: public B, public C { public: D(int x):B(x++), C(x++), A(x++){} ...

Задан 15 Jun 2013, 16:19 от prongs
  • 16 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Виртуальное наследование: ошибка: нет уникального окончательного переопределения

Я знаю, что виртуальное наследование рассматривается здесь до и перед тем, как задавать этот вопрос, я подробно рассмотрел виртуальное наследование и подробн...

Задан 03 Jun 2014, 02:28 от jazaman
  • 367 голосов
  • 10 ответов
  • 0 просмотров
10 ответов

Что такое виртуальный базовый класс в C ++?

Я хочу знать, что такое "виртуальный базовый класс"и что это значит. Позвольте мне показать пример: class Foo { public: void DoSomething() { /* ... */ } }; class Bar : public virtual Foo { public: void DoSpecific() { /* ... */ } };

Задан 22 Aug 2008, 01:13 от popopome