Программирование C++. Иерархия классов

Всем привет. Не могу понять в чем загвоздка. Задание: Необходимо построить иерархию классов согласно схеме наследования, приведенной в варианте задания. Каждый класс должен содержать инициализирующий конструктор и функцию show для вывода значений. Функция main должна иллюстрировать иерархию наследования. Скрин иерархии тоже скинул.Иерархия классов Пишу код, а он не читается, код тоже прикреплю.

#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
using namespace std;
class B1{
int a;
public:
B1(int x) { a=x; }
void show_B1() { cout <<"B1= "<< a << "\n"; }
};
class B2{
int b;
public:
B2(int x) { b=x; }
void show_B2() { cout << "B2= "<<b << "\n";}
};
class D1: public B1, public B2{
int c;
public:
D1(int x, int y, int l) : B1(y), B2(l) { c=x;};
void show_D1() { cout <<"D1= "<< c << "\n"; show_B1(); show_B2();}
};
class D2 {
int d;
public:
D2(int x) { d=x;};
void show_D2() { cout <<"D2= "<< d << "\n";
};
class D3: public D2{
int e;
public:
B3(int x) { e=x;}
void show_D3() {cout <<"D3= "<< e << "\n"; show_D2();}
};
class D4: public D3 {
int f;
public:
D4(int x, int i, int p, int q, int e, int k) : D3(i,p,e,k;}
void show_D4() { cout <<"D4= "<< f << "\n"; show_D3() ;}
};

main() {
setlocale(LC_ALL,"Russian");
D2 temp(100);
D4 temp1(1,2,3,4,5,6);
cout << "D2 temp(100,200,300,400,500);\n";
cout << "D4 temp1(1,2,3,4,5);\n";
cout<< "\nСледуя иерархии класса D4\n";
temp1.show_D4();
getch();
return 0;
}

Кто может, помогите и напишите правильный код, очень выручите.


Ответы (1 шт):

Автор решения: Harry
#include <iostream>
using namespace std;

class B1{
    int a;
public:
    B1(int x): a(x) {}
    void show() { cout <<"B1= "<< a << "\n"; }
};

class B2{
    int b;
public:
    B2(int x) { b=x; }
    void show() { cout << "B2= "<< b << "\n";}
};

class D1: public B1, public B2{
    int c;
public:
    D1(int x, int y, int l) : c(x), B1(y), B2(l) {};
    void show() { cout <<"D1= "<< c << "\n"; B1::show(); B2::show();}
};

class D2 {
    int d;
public:
    D2(int x): d(x) {};
    void show() { cout <<"D2= "<< d << "\n"; }
};

class D3: public D1, public D2 {
    int e;
public:
    D3(int a, int b, int c, int d, int x):e(x),D1(a,b,c),D2(d) {}
    void show() {cout <<"D3= "<< e << "\n"; D1::show(); D2::show();}
};
class D4: public D3 {
    int f;
public:
    D4(int x, int i, int p, int q, int e, int k): f(x), D3(i,p,q,e,k) {};
    void show() { cout <<"D4= "<< f << "\n"; D3::show() ;}
};

int main() {
    D2 temp(100);
    D4 temp1(1,2,3,4,5,6);
    cout << "D2 temp(100,200,300,400,500);\n";
    cout << "D4 temp1(1,2,3,4,5);\n";
    cout<< "\nСледуя иерархии класса D4\n";
    temp1.show();
}

Просто немного почитать учебник, исправить - и все готово...

→ Ссылка