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

friend function - C++

Восстановить пароль Регистрация
 
thedriveee
3 / 3 / 1
Регистрация: 16.09.2012
Сообщений: 107
18.09.2012, 09:37     friend function #1
Помогите плз разобраться:
Когда я делаю инкремент "х" через закрытые функции класса - все работает нормально, а когда через функцию-друга, то он просто не увеличивает. =(

header-file
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
#ifndef TRAIN
#define TRAIN
#include <iostream>
#include <cstring>
 
 
using namespace std;
 
class str {
private:
    int x;
public:
    str (int newX);
    void incrementX (int dx);
    friend int getX (str s);
    friend void incrementX (str s, int dx);
};
 
str::str (int newX) {
    x = newX;
}
 
int getX (str s) {
    return s.x;
}
 
void str::incrementX (int dx) {
    x += dx;
}
 
void incrementX (str s, int dx) {
    s.x += dx;
}
 
#endif


cpp-file

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cstring>
#include "train.h"
 
using namespace std;
 
int main () {
 
    str s(12);
    s.incrementX(1);
    cout << getX(s) << endl; // выводит 13
 
    incrementX (s, 1);
    cout << getX(s) << endl;// тоже почему-то выводит 13
 
    system ("pause");
}

Заранее всем добрым людям спс!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2012, 09:37     friend function
Посмотрите здесь:

ошибка: friend declaration declares a non-template function C++
C++ C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend
Friend Function C++
friend function C++
C++ Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration?
Friend function and Overload <<(>>) C++
Класс friend C++
Friend function C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
 Аватар для vxg
2663 / 1674 / 157
Регистрация: 13.01.2012
Сообщений: 6,251
18.09.2012, 09:40     friend function #2
объект в дружественную функцию передается по значению - вы благополучно увеличиваете счетчик у копии объекта которая так и остается в стеке и убивается при возврате из функции. передавайте указатель на объект или ссылку.
Yandex
Объявления
18.09.2012, 09:40     friend function
Ответ Создать тему
Опции темы

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