#include <iostream>
#include <string>
using namespace std;
class Person
{
private:
string name;
public:
Person(string _name, int _money) : name(_name), money(_money) {}
int money;
int get_money() {return money; }
};
class Company
{
private:
string name;
public:
Company(string _name) : name(_name) {}
void pay_salary(Person p, int amount);
};
void Company::pay_salary(Person p, int amount)
{
p.money += amount;
}
int main()
{
Person bob("Bob", 0);
Company c("C");
cout << bob.get_money() << endl; // prints 0
c.pay_salary(bob,100);
cout << bob.get_money() << endl; // prints 0
return 0;
}
このコード(私の問題を説明するために簡略化)では、Personのお金を増やすためにCompany内のメンバー変数moneyにアクセスします。しかし、p.money + = amountはローカルでのみ動作するように見え、メインの特定の人の金額は変更されません。他のクラス内のメンバー変数にアクセスして変更する
この作品を制作するにはどうすればよいですか?お金を保護されたメンバー変数にすることは可能でしょうか?
Googleは呼び出しによる参照と呼び出しによる呼び出しを行います。 –
'void Company :: pay_salary(Person&p、int amount)' – stark
あなたの質問に答えるには、void Company :: pay_salary(Person p、int amount) '。プロトタイプはもちろん同じものです。 –