我有一个名为factory
的类,其中有一个名为balance
的变量。 我用它创建了一个名为f
的对象。 另一方面,我有一个名为Medicine
的类,它必须更改F
中的Balance
。 我制作了两个medice
的对象,分别命名为med1
和med2
。
med1
将f
的余额
加10。 med2
将f
balance
加5。 但是这些更改在f
中并不相互添加。 似乎每个medice
对象都有自己的f
副本。
有什么方法可以在F
中保存这些更改吗?
#include <iostream>
#include <string>
using namespace std;
class Factory
{
public:
Factory() {};
void addbalance(int x)
{
balance += x;
}
void show()
{
cout << balance;
}
private:
int balance = 0;
};
class Medicine
{
public:
Medicine() {};
Medicine(Factory f)
{
fact = f;
}
void addBalance(int x)
{
fact.addbalance(x);
}
void show()
{
fact.show();
}
private:
Factory fact;
};
int main()
{
Factory f;
Medicine medi1(f), medi2(f);
medi1.addBalance(10);
medi2.addBalance(5);
f.show(); // I want here to show 15, not 0.
return 0;
}
它可以使用引用来完成。
#include <iostream>
#include <string>
using namespace std;
class Factory
{
public:
Factory() {};
void addbalance(int x)
{
bal += x;
}
void show()
{
cout << bal;
}
private:
int bal = 0;
};
class Medicine
{
public:
// now cannot be initialized without a Factory
//Medicine() {};
Medicine(Factory& f) : fact(f) // add & and initialize via member initialization list
{
}
void addBalance(int x)
{
fact.addbalance(x);
}
void show()
{
fact.show();
}
private:
Factory& fact; // add &
};
int main()
{
Factory f;
Medicine medi1(f), medi2(f);
medi1.addBalance(10);
medi2.addBalance(5);
f.show(); // I want here to show 15, not 0.
return 0;
}
您必须将变量balance创建为一个静态变量,然后用类名和::运算符调用它