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

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

Войти
Регистрация
Восстановить пароль
 
mh-coder
25 / 24 / 3
Регистрация: 01.02.2014
Сообщений: 781
#1

Дружественная функция класса - C++

18.06.2014, 16:59. Просмотров 335. Ответов 4
Метки нет (Все метки)

Проблема в том что дружественная функция класа механик в класе car (friend void update_status) не может обращатся к полям, почему?

C++ (Qt)
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream>
#include <string>
 
using namespace std;
 
class Mechanic;
class Manager;
 
class Car{
 
public:
    Car(void);
    ~Car(void);
 
    friend istream & operator >> (istream&,  Car&);
    friend ostream & operator << (ostream&,  Car&);
 
    friend void update_status(const int& , Car&);
 
private:
    string firm;
    int status;
    int num;
    int zed;
 
};
 
 
class Mechanic{
 
public:
    Mechanic(void);
    ~Mechanic(void);
    friend istream & operator >> (istream&,  Car&);
 
    void update_status(const int&, Car&);
 
private:
    string name;
    int cash;
 
};
 
 
class Manager{
 
public:
    Manager(void);
    ~Manager(void);
 
 
private:
 
    string name;
 
 
};
 
void main() {
    const int count_p_menu = 3;
 
    string menu[count_p_menu] = {
        "Write the firm",
        "Write the status",
        "Write the numeric"
    };
        Car first;
        while(true) {
            system("cls");
 
cout<<first;
    for (int i = 1; i <= count_p_menu; i++)
    {
        cout<<i<<" - "<<menu[i-1]<<"\n";
    }
 
    cin>>first;
    cin>>first;
 
 
    }
 
 
 
    system("pause");
 
}   
 
 
Car::Car(void){
    firm = "";
    status = 0;
    num = 0;
    zed = 0;
}
Car::~Car(void){
}
 
istream & operator >> (istream& in, Car& cl){
    if(cl.zed == 0) {
        cout<<"Please write the number of menu - ";
        in>>cl.zed;
    }else{
 
        if(cl.zed == 1){
            cout<<"Write firm\n";
            in>>cl.firm;
            cl.zed = 0;
        }
        if(cl.zed == 2){
            cout<<"Write status\n";
            in>>cl.status;
            cl.zed = 0;
        }
        if(cl.zed == 3){
            cout<<"Write numeric\n";
            in>>cl.num;
            cl.zed = 0;
        }
        if(cl.zed > 3){
            cout<<"Write firm\n";
            in>>cl.firm;
            cl.zed = 0;
        }
 
    }
   return in; 
}
 
ostream & operator << (ostream &out,Car &cl){
    if(cl.firm != "" || cl.status != 0 || cl.num != 0){
    return cout<<"\nFirm - "<<cl.firm<<"\nStatus - "<<cl.status<<"\nNumeric - "<<cl.num<<"\n----------------\n";
    }
}
 
 
void Mechanic::update_status(const int& i, Car & cl){
 
    cl.status = i;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2014, 16:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дружественная функция класса (C++):

Шаблон класса и дружественная функция - C++
Доброго времени суток. Столкнулся с непониманием одного процесса. Задача звучит следующим образом: Написать шаблон функции isEqualTo для...

Дружественная шаблонная функция шаблонного класса - C++
Не компилируется. Подскажите правильный синтаксис. template&lt;typename T&gt; class A; template&lt;typename T, typename ... Args&gt; void func(A&lt;T&gt;...

Преобразование типа аргумента в тип класса и дружественная функция - C++
Добрый день. Есть код: class Cls { private: double x; public: Cls(); Cls(double);

Дружественная функция-оператор, доступ к закрытым полям класса - C++
У меня есть класс MyClass, вот код: class MyClass { int x, y; public: MyClass(); friend ostream &amp; operator &lt;&lt; (ostream &amp;,...

Почему дружественная функция не может обратиться к protected полю класса? - C++
Не могу понять, почему функция не может обратиться к protected полю класса: class Ships { protected: int hits; int ships; ...

Почему дружественная функция с перегруженным оператором << не имеет доступа к данным класса? - C++
В заголовочном файле &quot;klass.h&quot; есть класс: class klass { int x; public: klass(); ~klass(); void show(); friend void...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ilot
Модератор
Эксперт С++
1809 / 1166 / 227
Регистрация: 16.05.2013
Сообщений: 3,074
Записей в блоге: 5
Завершенные тесты: 1
18.06.2014, 17:24 #2
Цитата Сообщение от mh-coder Посмотреть сообщение
Проблема в том что дружественная функция класа механик в класе car (friend void update_status) не может обращатся к полям, почему?
Потому что ф-я update_status в классе Mechanic это функция член этого класса, а не глобальная функция объявленная другом Car.
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,997
18.06.2014, 17:39 #3
можно сделать класс дружественным и тогда её использовать
mh-coder
25 / 24 / 3
Регистрация: 01.02.2014
Сообщений: 781
18.06.2014, 18:59  [ТС] #4
а разве таким способом friend void update_status(const int& , Car&); я не делаю функцию дружественной?
zss
Модератор
Эксперт С++
6361 / 5925 / 1921
Регистрация: 18.12.2011
Сообщений: 15,231
Завершенные тесты: 1
18.06.2014, 21:38 #5
C++
1
 friend void Mechanic::update_status(const int& , Car&);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2014, 21:38
Привет! Вот еще темы с ответами:

Дружественная функция, объявлённая ранее вне пространства имён класса -> error LNK2019 в Visual Studio 2012 - C++
Всем привет. Долгое время пытался откопать ответ в гугле, но не получилось. Заранее благодарен. void f(){}; namespace space { ...

Переопределение операторов как член-класса и как дружественная функция - C++
Привет. Задача создать класс целых чисел, для него нужно переопределить операторы ++ и + как функции-члены и -- и - как дружественные...

Дружественная функция - C++
Хочу сделать вычисление площади как дружественную функцию, начал описывать, дальше догнать не могу как кодить. Подскажите? #include...

Дружественная функция - C++
У меня есть класс, подсчитывающий количество равносторонних треугольников в заданном множестве точек на плоскости. Подскажите,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.06.2014, 21:38
Ответ Создать тему
Опции темы

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