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

множественное наследование - C++

Восстановить пароль Регистрация
 
Zla9_Kolu4ka
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 398
23.02.2014, 22:00     множественное наследование #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
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
82
83
84
85
86
87
88
89
90
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
 
class computer_screen{
public:
    computer_screen(char*, long, int, int);
    void show_screen(void);
private:
    char type[32];
    long colors;
    int x_resolution;
    int y_resolution;
};
 
    
computer_screen::computer_screen(char* type, long colors, int x_res, int y_res){
    strcpy(computer_screen::type, type);
    computer_screen::colors = colors;
    computer_screen::x_resolution = x_res;
    computer_screen::y_resolution = y_res;
}
 
 
void computer_screen::show_screen(void){
    cout << "Tip ekrana: " << type << endl;
    cout << "Colors: " << colors << endl;
    cout << "Razreshenie: " << x_resolution << " na " << y_resolution << endl;
}
 
    
class mother_board{
public:
    mother_board(int, int, int);
    void show_mother_board(void);
private:
    int processor;
    int speed;
    int RAM;
};
 
 
mother_board::mother_board(int processor, int speed, int ram){
    mother_board::processor = processor;
    mother_board::speed = speed;
    mother_board::RAM = ram;
}
 
  
void mother_board::show_mother_board(void){
    cout << "CPU: " << processor << endl;
    cout << "4astota: " << speed << " MHz" << endl;
    cout << "RAM: " << RAM << " Mbait" << endl;
}
 
 
class computer : public computer_screen, public mother_board{
public:
    computer(char*, int, float);
    void show_computer (void);
private:
    char name [64];
    int hard_disk;
    float floppy;
};
 
 
computer::computer(char* name, int hard_disk, float floppy) : computer_screen(screen, colors, x_res, y_res), mother_board(processor, speed, RAM){
       strcpy(computer::name, name);
       computer::hard_disk = hard_disk;
       computer::floppy = floppy;
}
 
    
void computer::show_computer(void){
    cout << "Tip: " << name << endl;
    cout << "HARD: " << hard_disk << " Mbait" << endl;
    cout << "Gibkiy disk: " << floppy << " Mbait" << endl;
    show_mother_board();
    show_screen();
}
 
    
void main(void){
    computer my_pc("Compaq", 212, 1.44, "SVGA", 16000000, 640, 480, 486, 66, 8);
    my_pc.show_computer();
 
    char ch = getchar();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2014, 22:00     множественное наследование
Посмотрите здесь:

Множественное наследование C++
Множественное наследование C++
Множественное наследование C++
Множественное наследование C++
Множественное наследование C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.02.2014, 22:43     множественное наследование #2
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
Почему не компилируется код?
А должен? В 69 строке неизвестные идентификаторы.
Zla9_Kolu4ka
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 398
24.02.2014, 11:20  [ТС]     множественное наследование #3
А должен? В 69 строке неизвестные идентификаторы.
computer::computer(char* name, int hard_disk, float floppy) : computer_screen(screen, colors, x_res, y_res), mother_board(processor, speed, RAM){

не пойму, почему пишет неизвестный идентификатор screen, colors, x_res, y_res
computer_screen(screen, colors, x_res, y_res) - что он не может обратиться к конструктору computer_screen, все параметры в норме

Параметры в норме и в mother_board(processor, speed, RAM)

Просто не пойму почему мы должны конструктор computer делать именно таким
computer(char*, int, float, char*, long, int, int, int, int, int); ???

Вот рабочий код
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
82
83
84
85
86
87
88
89
90
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
 
class computer_screen{
public:
    computer_screen(char*, long, int, int);
    void show_screen(void);
private:
    char type[32];
    long colors;
    int x_resolution;
    int y_resolution;
};
 
    
computer_screen::computer_screen(char* type, long colors, int x_res, int y_res){
    strcpy(computer_screen::type, type);
    computer_screen::colors = colors;
    computer_screen::x_resolution = x_res;
    computer_screen::y_resolution = y_res;
}
 
 
void computer_screen::show_screen(void){
    cout << "Tip ekrana: " << type << endl;
    cout << "Colors: " << colors << endl;
    cout << "Razreshenie: " << x_resolution << " na " << y_resolution << endl;
}
 
    
class mother_board{
public:
    mother_board(int, int, int);
    void show_mother_board(void);
private:
    int processor;
    int speed;
    int RAM;
};
 
 
mother_board::mother_board(int processor, int speed, int ram){
    mother_board::processor = processor;
    mother_board::speed = speed;
    mother_board::RAM = ram;
}
 
  
void mother_board::show_mother_board(void){
    cout << "CPU: " << processor << endl;
    cout << "4astota: " << speed << " MHz" << endl;
    cout << "RAM: " << RAM << " Mbait" << endl;
}
 
 
class computer : public computer_screen, public mother_board{
public:
    computer(char*, int, float, char*, long, int, int, int, int, int);
    void show_computer (void);
private:
    char name [64];
    int hard_disk;
    float floppy;
};
 
 
computer::computer(char* name, int hard_disk, float floppy, char* screen, long colors, int x_res, int y_res, int processor, int speed, int RAM) : computer_screen(screen, colors, x_res, y_res), mother_board(processor, speed, RAM){
       strcpy(computer::name, name);
       computer::hard_disk = hard_disk;
       computer::floppy = floppy;
}
 
    
void computer::show_computer(void){
    cout << "Tip: " << name << endl;
    cout << "HARD: " << hard_disk << " Mbait" << endl;
    cout << "Gibkiy disk: " << floppy << " Mbait" << endl;
    show_mother_board();
    show_screen();
}
 
    
void main(void){
    computer my_pc("Compaq", 212, 1.44, "SVGA", 16000000, 640, 480, 486, 66, 8);
    my_pc.show_computer();
 
    char ch = getchar();
}
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
24.02.2014, 11:44     множественное наследование #4
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
Просто не пойму почему мы должны конструктор computer делать именно таким
Параметры из конструктора дочернего класса передаются конструкторам базовых. То, что Вы писали в первом варианте не работает, потому что надо же знать типы аргументов. Иначе получаете ошибку, которую получаете.
Yandex
Объявления
24.02.2014, 11:44     множественное наследование
Ответ Создать тему
Опции темы

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