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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
Alilidor
0 / 0 / 0
Регистрация: 21.05.2010
Сообщений: 8
23.05.2010, 22:28     Виртуальный базовый класс #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
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++
C++ typeid определяет тип указателя на базовый класс, как тип "базовый класс". Вне зависимости от присвоенного ему значения
C++ Создать базовый класс - Array и производный класс - Money для работы денежной суммы
Указатели в базовом классе на базовый класс и производный класс C++
C++ Создать класс - данные - абстрактный базовый класс. Создать производные классы
C++ Создать абстрактный базовый класс Тройка чисел с виртуальными методами увеличения на 1. Создать производный класс Время со своими функциями
Класс работник. Виртуальный метод C++
C++ Как в функции my_function преобразовать ссылку на базовый класс в ссылку на класс B или С

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dyosick
 Аватар для 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() {} ?
Yandex
Объявления
23.05.2010, 23:11     Виртуальный базовый класс
Ответ Создать тему
Опции темы

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