Форум программистов, компьютерный форум CyberForum.ru

Конфликт имён в ромбовидном наследовании - C++

Восстановить пароль Регистрация
 
weidmann
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 20
06.12.2013, 00:19     Конфликт имён в ромбовидном наследовании #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class A {
private:
int a;
public:
A(a0) : a(a0) {}
}
class B1 : virtual public A {
private:
int b;
int c;
public:
B1(a0, b0, c0) : A(a0), b(b0), c(c0) {}
}
class B2 : virtual public A {
private:
int b;
int d;
public:
B2(a0, b0, d0) : A(a0), b(b0), d(d0) {}
}
class C : public B1, public B2 {
public:
C(a0, b0, c0, d0) : A(a0), B1(a0, b0, c0), B2 (a0, b0, d0) { cout << b; }
}
В общем: "неоднозначный уровень доступа b".

Додумался только добавить в класс C собственное поле b:
C++
1
2
3
4
5
6
class C : public B1, public B2 {
private:
int b;
public:
C(a0, b0, c0, d0) : A(a0), B1(a0, b0, c0), B2 (a0, b0, d0), b(b0) { cout << b; }
}
Может есть способы получше или какие-то альтернативы?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2013, 00:19     Конфликт имён в ромбовидном наследовании
Посмотрите здесь:

Конструкторы в списках и конфликт имён. C++
C++ Проблемы при ромбовидном наследовании
О виртуальном наследовании C++
Ошибка в наследовании C++
не до понимание в наследовании C++
Конфликт имен при множественном наследовании struct C++
Конфликт имён C++
C++ Ошибка в наследовании

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 08:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru