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

неоднозначный уровень доступа, идентификатор не найден - C++

Восстановить пароль Регистрация
 
BublickEnemy
1 / 1 / 0
Регистрация: 11.02.2013
Сообщений: 15
19.02.2013, 17:39     неоднозначный уровень доступа, идентификатор не найден #1
Hi people!
Задание:
1) Необходимо построить иерархию классов согласно схеме наследования, приведенной в варианте задания.
2) Каждый класс должен содержать инициализирующий конструктор и функцию show для вывода значений.
3) Функция main должна иллюстрировать иерархию наследования.
Схему залил.
Мой код:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;
class B1
{
int b;
public:
B1()
{
};
B1(int z)
{
b=z;
};
void showB1()
{
cout << "B1 = " << b << endl;
};
};
 
class D1: public B1
{
int d1;
public:
D1() {};
D1(int m, int n):B1(m) {
d1=n;
}
void showD1() {
cout <<"D1 = "<< d1 << endl;
showB1();
};
};
 
class D3: public D1 {
int d3;
public:
D3() {};
D3(int m, int n, int o):D1(m, n) {
d3=o;
}
void showD3() {
cout <<"D3 = "<< d3 << endl;
showD1();
}
};
 
class D2: protected B1, protected D3 {
int d2;
public:
D2() {};
D2(int m,int o, int p, int r, int s):B1(m), D3(o,p,r) {
d2=s;
}
void showD2() {
cout <<"D2 = "<< d2 << endl;
showB1();
showD3();
}
};
class B2: public D2 {
int b2;
public:
B2() {};
B2(int m, int n, int o, int p, int r, int s):D2(m, n, o, p, r) {
b2=s;
}
void showB2() {
cout <<"B2 = "<< b2 << endl;
showD2();
}
};
 
int main()
{
B2 elemB2(100, 200, 300, 400 ,500, 600);
elemB2.showB2();
getch();
return 0;
}
Ошибки:
(58) : error C2385: неоднозначный уровень доступа "showB1"
(58) : error C3861: showB1: идентификатор не найден

Прошу помощи.
Миниатюры
неоднозначный уровень доступа, идентификатор не найден  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2013, 17:39     неоднозначный уровень доступа, идентификатор не найден
Посмотрите здесь:

C++ идентификатор не найден!!!
Идентификатор не найден C++
Не компилируется БД, не найден идентификатор C++
ошибка идентификатор не найден C++
C++ Идентификатор не найден
C++ Идентификатор не найден
B zero идентификатор не найден C++
C++ Идентификатор не найден

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
19.02.2013, 18:10     неоднозначный уровень доступа, идентификатор не найден #2
Если следовать иерархии как в вашем коде то необходимо виртуальное наследование - класс D1 виртуально наследует B1 и класс D2 также виртуально наследует B1. Еесли же придерживаться простого принципа обхода схемы - слева-направо, сверху-вниз то все довольно просто решается.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
 
using namespace std;
 
class B1
{
   int b;
public:
   B1(int z) : b(z)
   { }
   
   void showB1()
   {
      cout << "B1 = " << b << endl;
   }
};
 
class B2
{
   int b2;
public:
   B2() {};
   B2(int m) : b2(m) 
   { }
 
   void showB2() 
   {
      cout <<"B2 = "<< b2 << endl;   
   }
};
 
class D1 : public B1
{
   int d1;
public:
   D1(int m, int n) : B1(m), d1(n) 
   { }
   
   void showD1() 
   {
      cout <<"D1 = "<< d1 << endl;
   }
};
 
class D2 : protected B1, public B2 
{
   int d2;
public:
   D2(int m, int p, int r) : B1(m), B2(p), d2(r)
   {  }
 
   void showD2() 
   {
      cout <<"D2 = "<< d2 << endl;
      showB1();
      showB2();
   }
};
 
class D3 : public D1, protected D2
{
   int d3;
public:
   D3(int m, int n, int o, int p, int q, int r) : D1(m, n), D2(o, p, q), d3(r)
   {  }
   
   void showD3() 
   {
      cout <<"D3 = "<< d3 << endl;
      showD1();
      showD2();
   }
};
 
int main()
{
   D3 elemB2(100, 200, 300, 400 ,500, 600);
   elemB2.showD3();
 
   return 0;
}
BublickEnemy
1 / 1 / 0
Регистрация: 11.02.2013
Сообщений: 15
19.02.2013, 18:29  [ТС]     неоднозначный уровень доступа, идентификатор не найден #3
Цитата Сообщение от Jupiter Посмотреть сообщение
Если следовать иерархии как в вашем коде то необходимо виртуальное наследование - класс D1 виртуально наследует B1 и класс D2 также виртуально наследует B1. Еесли же придерживаться простого принципа обхода схемы - слева-направо, сверху-вниз то все довольно просто решается.
Понял, спасибо за помощь.
Yandex
Объявления
19.02.2013, 18:29     неоднозначный уровень доступа, идентификатор не найден
Ответ Создать тему
Опции темы

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