Почему он печатает неожиданные значения? - PullRequest
0 голосов
/ 11 апреля 2020
#include <iostream>

using namespace std;

class calculator {
public:
    int n1, n2;

    friend void setNumbers(calculator v);
    friend void getNumbers(calculator v);
};

void setNumbers(calculator v) {
    cin >> v.n1 >> v.n2;
}

void getNumbers(calculator v) {
    cout << v.n1 << ' ' << v.n2 << '\n';
}

int main() {
    calculator calc;
    setNumbers(calc);
    getNumbers(calc);
    return 0;
}

Когда я вызываю функцию getNumbers, она печатает совершенно разные значения, которые я не вводил. Например, когда я ввожу 3 6, он печатает 0 1, тогда как я ожидал 3 6. Что может быть не так?

1 Ответ

0 голосов
/ 11 апреля 2020

Передача объекта без ссылки не изменит значения вашего объекта калькулятора, если вы ожидаете, что они будут инициализированы вашими входными значениями после вызова setNumbers. Вместо этого у них будут значения мусора, поскольку они не инициализируются для getNumbers.

. Передайте объекты калькулятора по ссылке, используя &, как указано в комментариях, и вы можете go.

class calculator 
{
    public:
    int n1, n2;
    friend void setNumbers(calculator &v);
    friend void getNumbers(calculator &v);

};

void setNumbers(calculator &v) {
    cin >> v.n1 >> v.n2;
}

void getNumbers(calculator &v) {
    cout << v.n1 << ' ' << v.n2 << '\n';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...