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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
Alilidor
0 / 0 / 0
Регистрация: 21.05.2010
Сообщений: 8
#1

Виртуальный базовый класс - C++

23.05.2010, 22:28. Просмотров 2260. Ответов 2
Метки нет (Все метки)

Создать иерархию типов, описывающую - человека, студента, отца семейства и студента-отца семейства. Использовать виртуальные базовые классы.
Написал, некомпилится, подскажите где ошибка, пожалуйста.
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
using namespace std;
class human
{
    string name;
public:
 
    human(string humname ): name(humname) {}
    string getName()
    {
        return name;
    }
};
class student: virtual public human
{
    int curs;
public:
    student (string humname, int cnumb ): human(humname), curs(cnumb) {}
    
    int getCurs()
    {
        return curs;
    }
};
class father: virtual public human
{   int childnumb;
public:
    father(string humname, int chnum ): human(humname), childnumb(chnum) {}
    
    int getChildnumb()
    {
        return childnumb;
    }
};
class FatherStudent: public student,  public father
{   
public:
    FatherStudent( string humn, int curnum, int chnum): father(humn, chnum), student(humn, curnum) {}
    
};
 
int main()
{
    FatherStudent ft("Q", 20, 30);
    
    cout << ft.getName();
    
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2010, 22:28     Виртуальный базовый класс
Посмотрите здесь:

Виртуальный абстрактный класс - C++
Надеюсь мой вопрос будет не глупым. Есть класс исключений в пространстве имен std У него есть метод what Я создаю свой базовый класс...

Указатель на виртуальный класс - C++
Например у меня есть виртуальный класс Food и его нащадок Drink: class Food { public: Food (int m) {Weight = m;}; ~Food (); ...

Виртуальный класс. Сигналы - C++
#ifndef MODULE_H #define MODULE_H #include &lt;QWidget&gt; class Module : public QWidget { Q_OBJECT public: ...

Виртуальный класс и перегрузка оператора - C++
Собственно немного разобравшись в ооп написал небольшой код, по заданию нужно как-то прикрутить к нему виртуальный класс и сделать...

Виртуальный методы, абстрактный класс. - C++
Здравствуйте. Теоретические вопросы. Что такое виртуальный методы и что такое абстрактный класс. Можете объяснить своими словами без...

Класс работник. Виртуальный метод - C++
Здраствуйте! Надо ввести работников с почасовой ЗП и фиксированной ЗП. Написать виртуальный метод для подсчета ЗП( для почасовиков -...

Базовый класс и производный... - C++
Есть class A. У него есть функция protected foo(); Есть класс наследник B (class B: public A). В классе-наследнике B есть функция g(),...

абстрактный базовый класс - C++
люди подскажите.есть абстрактный базовый класс можно ли в нем определить конструктор копирования? написал в компиляторе,получается,что...

Не определён базовый класс - C++
компилятор выдаёт ошибку:error C2504: Confection: не определен базовый класс. Класс Filling наследуется от класса Confection #pragma...

Не определен базовый класс - C++
В проекте есть два проблемных класса: C_Button: #include &quot;C_Scenes.h&quot; class C_Button: protected C_Scenes { //... } ...

Абстрактный базовый класс - C++
Создать абстрактный базовый класс с виртуальной функцией - объем. Создать производные классы: параллелепипед, пирамида, тетраэдр, шар со...

Не определен базовый класс - C++
Есть класс C_Button, в нем определен метод buttonEvents(). Этому методу необходим метод класса C_Scenes: sceneDraw_2(). Если в C_Button...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dyosick
61 / 61 / 6
Регистрация: 25.08.2008
Сообщений: 178
23.05.2010, 23:03     Виртуальный базовый класс #2
Замени
C++
1
FatherStudent( string humn, int curnum, int chnum): father(humn, chnum), student(humn, curnum) {}
на
C++
1
FatherStudent( string humn, int curnum, int chnum): father(humn, chnum), student(humn, curnum),human(humn){}
1.Надо явно инициализировать все конструкторы.
2.Или напиши ещё конструкоры по умолчанию.
Alilidor
0 / 0 / 0
Регистрация: 21.05.2010
Сообщений: 8
23.05.2010, 23:11  [ТС]     Виртуальный базовый класс #3
заменить я догадался, но думал что так неправильно, ведь выходит что human вызывается 3 раза. Ну или 2 один раз через один из виртуальных классов, а второй раз явно?
И скажите пожалуйста, что значит написать еще конструкторов по умолчанию? т.е. просто в классы добавить human() {} ?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru