Вопросы по теме 'virtual-inheritance'
Как виртуальное наследование решает алмазную (множественное наследование) неоднозначность?
class A { public: void eat(){ cout<<"A";} };
class B: virtual public A { public: void eat(){ cout<<"B";} };
class C: virtual public A { public: void eat(){ cout<<"C";} };
class D: public B,C {...
84651 просмотров
schedule
09.11.2023
Размер класса с виртуальным базовым классом
Возможный дубликат: размер объекта с виртуальным
class X {};
class Y : public virtual X {};
class Z : public virtual X {};
class Class : public Y, public Z {};
Почему sizeof (Class) выводит 12 на моем компиляторе gcc?...
172 просмотров
schedule
01.11.2023
Как работает таблица виртуального наследования в g++?
Я пытаюсь лучше понять, как виртуальное наследование работает на практике (то есть не в соответствии со стандартом, а в реальной реализации, такой как g++ ). Собственно вопрос выделен внизу жирным шрифтом.
Итак, я построил себе граф наследования,...
583 просмотров
schedule
09.03.2024
Неоднозначность множественного наследования интерфейсов в C++
Я сделал тестовый код следующим образом:
#include <iostream>
using namespace std;
#ifndef interface
#define interface struct
#endif
interface Base
{
virtual void funcBase() = 0;
};
interface Derived1 : public Base
{
virtual void...
7162 просмотров
schedule
12.04.2023
Виртуальное наследование и интерфейсы
class IA
{
public:
virtual void a() = 0;
};
class A: virtual public IA
{
public:
virtual void a()
{
}
};
class IB: virtual public IA
{
public:
virtual void b() = 0;
};
class B: virtual public IB, public A
{
public:
virtual...
2612 просмотров
schedule
15.10.2023
При использовании виртуального базового класса в сценарии множественного наследования необходимо ли, чтобы все производные классы ссылались на виртуальную базу?
Стандарт кодирования JSF C++ ВВС США требует, чтобы виртуальный базовый класс был объявлен для каждого производного класса, который обращается к виртуальной базе.
Например, в следующей иерархии:
A
/ \
B1 B2
C1 C2
\ /
D
... правило,...
669 просмотров
schedule
05.06.2023
Ошибка MinGW 4.7.0–4.7.2: недействительный этот указатель в функциях-членах при использовании смешанного виртуального и невиртуального множественного наследования
У меня есть код с наследованием, который выглядит так:
B
/ \
/ \
/ \
BI D
(template) /
\ /
\ /
DI
(template)
[B]ase и [D]erived — это интерфейсы, содержащие static...
294 просмотров
schedule
18.02.2022
Виртуальное наследование C++ и повышение Python
В игре, над которой я работаю, у меня есть два класса C++ (ICollidable и Sprite), которые фактически наследуют другой класс C++, называемый Object, для его свойств Position и Size. У меня есть эти три класса, открытые для python с помощью boost...
1235 просмотров
schedule
24.06.2023
Использование CRTP с виртуальным наследованием
У меня есть иерархия узлов, где может возникнуть «алмаз».
Каждый узел должен быть клонируемым, но я не хочу писать метод клонирования для каждого узла. Поэтому я использую CRTP.
class Node
{
public:
Node(){}
Node(Fill*) { }...
1481 просмотров
schedule
03.06.2023
Как отказаться от неполиморфного виртуального базового класса?
Есть ли способ перейти от виртуального базового класса к производному классу, когда виртуальные функции не задействованы? Вот некоторый код, чтобы продемонстрировать, о чем я говорю:
struct Base1
{
int data;
};
struct Base2
{
char...
935 просмотров
schedule
28.11.2022
Виртуальное наследование с наследованием конструктора
У меня есть иерархия классов, которая сводится к
class Module { };
struct Port {
Module& owner;
Port(Module& owner) : owner(owner) {}
};
struct InPort : virtual Port { using Port::Port; };
struct OutPort : virtual Port...
423 просмотров
schedule
24.10.2023
C++ Static_cast по указателю на виртуальный базовый класс
Примерно через 6 или 7 лет программирования почти исключительно на C++ я обнаружил, что:
struct A
{
virtual ~A() = 0; // Abstract class
};
A::~A() {}
struct B : virtual A
{};
int main()
{
A* a = new B;...
609 просмотров
schedule
03.07.2022
Получение класса из виртуальной базы без конструктора по умолчанию
Я пишу небольшую иерархию классов исключений для приложения C++, которое я разрабатываю, и у меня возникают проблемы с косвенным выводом из std::runtime_error . Вот код, аналогичный тому, что я написал до сих пор:
class RuntimeException : public...
423 просмотров
schedule
09.04.2023
Как вызвать конструктор копирования всех базовых классов для копирования объекта большинства производных классов при наследовании бриллиантов в С++?
Рассмотрим приведенный ниже код:
#include<iostream>
using namespace std;
class A
{
public:
A() {cout << "1";}
A(const A &obj) {cout << "2";}
};
class B: virtual A
{
public:
B() {cout << "3";}
B(const...
2013 просмотров
schedule
08.03.2022
Стоимость виртуального наследования от интерфейса
Это попытка понять влияние использования наследования виртуального базового класса, особенно в отношении стоимости времени выполнения. Ситуация, которую я имею в виду, также включает в себя Интерфейсы (или ABC для этого).
I----------
/ |...
282 просмотров
schedule
16.12.2022
Выбор конструктора виртуального наследования
Почему это печатает 20000? Код явно вызывает определенные базовые конструкторы на всем пути наследования, но игнорирует указанный конструктор и вместо этого использует конструктор по умолчанию.
#include <iostream>
struct Car
{
Car() :...
170 просмотров
schedule
13.08.2022
Класс, использующий виртуальное наследование, позволяет конструктору базового класса перезаписывать члены другого базового класса.
Я недостаточно хорошо знаком с расположением памяти объектов, содержащих виртуальные базы, чтобы понять, почему следующее выглядит некорректно скомпилированным как clang, так и gcc. Это академическое упражнение, поэтому извините за легкомыслие...
99 просмотров
schedule
16.09.2022
Почему назначение копирования заставляет GCC выдавать предупреждение -Wvirtual-move-assign?
Следующая иерархия классов вызовет предупреждение [-Wvirtual-move-assign] в GCC, если назначение перемещения вызывается для экземпляра B.
struct A {
std::vector<int> v;
};
struct B : public virtual A {};
Следующие сценарии...
50 просмотров
schedule
05.04.2023
последовательность конструктора двух родительских классов
У меня есть один вопрос по двум версиям кода. Единственное отличие состоит в том, чтобы переключить виртуальное ключевое слово между родительским классом. Есть ли причина, по которой это произошло?
Версия первая:
#include<iostream>
using...
64 просмотров
schedule
01.04.2024
неправильный конструктор вызвал виртуальный базовый класс виртуального базового класса
У меня проблема с конструкторами очень сложной структуры классов, разбросанных по нескольким файлам. Каждый класс имеет общедоступный конструктор по умолчанию без аргументов и защищенный конструктор с аргументами. Каждый конструктор любого...
67 просмотров
schedule
01.02.2022