Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 04.12.2019
Сообщений: 2
1

Вызов метода одного класса в другом классе

04.12.2019, 17:07. Показов 2150. Ответов 3
Метки нет (Все метки)

Привет всем

Когда запускаю, то в методе GetOut() вместо имени человека выводится цифра 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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include <iostream>
#include <string>
using namespace std;
 
class Human
{
public:
    Human(string Name, int Age)
    {
        this->Name = Name;
        this->Age = Age;
    }
 
    void SayHello()
    {
        cout << "Привет, меня зовут " << GetName() << endl;
    }
 
    string GetName()
    {
        return Name;
    }
 
private:
    string Name;
    int Age;
};
 
class Vehicle
{
public:
    Vehicle(string Model, string Color)
    {
        this->Model = Model;
        this->Color = Color;
    }
 
    void GetIn(Human &p)
    {
        cout << "Я "<< GetModel() << ", в меня сел " << p.GetName() << "!" << endl;
    }
 
    void StartTheCar()
    {
        cout << "Я завёлся!" << endl;
    }
 
    void Drive()
    {
        cout << "Я " << GetModel() << ", я еду!" << endl;
    }
 
    virtual void Brake()
    {
 
    }
 
    void GetOut()
    {
        cout << "Я " << GetModel() << ", из меня вышел " << &Human::GetName << "!" << endl; //&Human::GetName выводит 1 в консоль
    }
 
    string GetModel()
    {
        return Model;
    }
private:
    string Model;
    string Color;
};
 
class Car : public Vehicle
{
public:
    Car(string Model, string Color):Vehicle(Model, Color)
    {
 
    }
 
    void Brake() override
    {
        cout << "Я АВТОМОБИЛЬ " << GetModel() << ", я торможу БЫСТРО!" << endl;
    }
};
 
class Truck : public Vehicle
{
public:
    Truck(string Model, string Color):Vehicle(Model, Color)
    {
 
    }
 
    void Brake() override
    {
        cout << "Я ГРУЗОВИК " << GetModel() << ", я торможу МЕДЛЕННО!" << endl;
    }
};
 
 
int main()
{
    setlocale(LC_ALL, "Ru");
 
    Human p1("Петр", 36);
    p1.SayHello();
 
    Car c1("lada granta", "зеленый");
    c1.GetIn(p1);
    c1.Drive();
    c1.Brake();
    c1.GetOut();
 
    Truck t1("Газель", "серый");
    t1.GetIn(p1);
    t1.Drive();
    t1.Brake();
    t1.GetOut();
 
    return 0;
 
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2019, 17:07
Ответы с готовыми решениями:

Вызов динамического аргумента класса в другом классе
Здравствуйте! Появилась проблема, в ходе решения задания, есть переменная scolarship, которая в...

Вызов метода класса, расположенного в другом файле
У нас есть 2 файла -&gt;Sourse.cpp and Sourse.h /*Sourse.cpp*/ #include...

В производном классе вызов приватного метода базового класса
Добрый вечер. Помогите понять одну вещь. Имеется такое наследование: class test1 { public: ...

Получение данных от одного класса в другом классе.
Здравствуйте уважаемые программисты. ситуация следующая: Есть класс А. У этого класса есть public...

3
Модератор
Эксперт функциональных языков программированияЭксперт Python
29634 / 16191 / 3235
Регистрация: 12.02.2012
Сообщений: 26,798
Записей в блоге: 5
04.12.2019, 17:11 2
А где ты вызываешь метод getOut у объекта p1? Я вижу только у c1 и t1.
0
0 / 0 / 0
Регистрация: 04.12.2019
Сообщений: 2
04.12.2019, 17:48  [ТС] 3
В классе Human нет же метода GetOut.
Нужно выводить имя из GetName в методе GetOut

Добавлено через 31 минуту
Ну вообщем-то, временным решением данной проблемы я сделал так же как и в методе GetIn
C++
1
2
3
4
5
    void GetOut(Human& p)
    {
        
        cout << "Я " << GetModel() << ", из меня вышел " << p.GetName() << "!" << endl;
    }
0
Комп_Оратор)
Эксперт по математике/физике
8719 / 4428 / 598
Регистрация: 04.12.2011
Сообщений: 13,276
Записей в блоге: 16
04.12.2019, 21:21 4
Цитата Сообщение от elStrangler Посмотреть сообщение
Ну вообщем-то, временным решением данной проблемы я сделал так же как и в методе GetIn
?
Вы пытались напечатать адрес метода вот тут:
C++
1
2
3
4
void GetOut()
    {
        cout << "Я " << GetModel() << ", из меня вышел " << &Human::GetName << "!" << endl; //&Human::GetName выводит 1 в консоль
    }
метод член без объекта нельзя вызвать. Он на то и член. То есть, не понятно поняли ли вы, о чём спросили.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2019, 21:21

Использование данных одного класса в другом классе
Подскажите как сделать так что бы значения d1,d2 из первого класса можно было использовать во...

Использование метода из одного класса в другом
Здравствуйте! Проходим классы, все никак не могу понять, как использовать метод из одного класса в...

Указатель на функцию-член одного класса в другом классе - C++
Добрый вечер! Может кто-то может помочь с проблемой. class Cook { public: void ...

Как объявить массив объектов одного класса в другом классе, а затем поместить в него объекты?
Как объявить массив объектов одного класса в другом классе, а затем поместить в него объекты?


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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