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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить значение по формуле http://www.cyberforum.ru/cpp-beginners/thread1211496.html
Вычислить элементы массива по формуле мне нужно сделать с помощью функции, вообще не представяляю как это сделать, может кто поможет)
C++ Определить на каком станке продуктивность каждого работника будет максимальной. На заводе есть N-работников и N-станков . Задана матрица a , где a - продуктивность i-го работника на j-м станке. Определить на каком станке продуктивность каждого работника будет максимальной. ... http://www.cyberforum.ru/cpp-beginners/thread1211462.html
C++ Использование динамического двумерного массива
Вот есть такой заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H template<typename TT> class Matrix { int RowCount, ColCount;
Получение компонент rgb из изображения и последующее изменение их C++
задача такая. в одном окне изображение.Оно должен от rgb перейти к модели yiq. При чем chechbox'сами выбирается компоненты y,i,q. Я понимаю,что по идеи берется компонента например r и приводится к y...
C++ Заполнить матрицу кругом http://www.cyberforum.ru/cpp-beginners/thread1211448.html
Всем привет! Необходимо заполнить матрицу по кругу, то есть нарисовать заполненный круг заданного радиуса в матрице( в картинке например), относительно какой нибудь точки Подскажите алгоритм...
C++ Массивы. Как определить, индекс четный или нечетный? Такой вопрос, как определить индекс четный или нечетный??? Вычислить и вывести сумму элементов массива V (11), которые имеют четные индексы и произведение элементов массива V (11), имеющих... подробнее

Показать сообщение отдельно
mh-coder
-4 / 26 / 3
Регистрация: 01.02.2014
Сообщений: 794

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

18.06.2014, 16:59. Просмотров 338. Ответов 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;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru