C++ 更改c+中的组合分类变量+;
我有一个名为C++ 更改c+中的组合分类变量+;,c++,class,combinations,C++,Class,Combinations,我有一个名为Factory的类,其中有一个名为balance的变量。我用它做了一个叫做f的对象。另一方面,我有一个名为Medicine的类,它必须在f中更改balance。我制作了两个名为med1和med2的Medicine对象 med1将f的余额增加10med2将f余额增加5。但是在f中,这些更改不会相互添加。 似乎每个Medicine对象都有自己的f副本 有没有办法将这些更改保存在f中 #include <iostream> #include <string> us
Factory
的类,其中有一个名为balance
的变量。我用它做了一个叫做f
的对象。另一方面,我有一个名为Medicine
的类,它必须在f
中更改balance
。我制作了两个名为med1
和med2
的Medicine
对象
med1
将f
的余额增加10med2
将f
余额增加5。但是在f
中,这些更改不会相互添加。
似乎每个Medicine
对象都有自己的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;
}
#包括
#包括
使用名称空间std;
阶级工厂
{
公众:
工厂(){};
无效余额(整数x)
{
余额+=x;
}
无效显示()
{
cout可以使用参考文献来完成
#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;
}
#包括
#包括
使用名称空间std;
阶级工厂
{
公众:
工厂(){};
无效余额(整数x)
{
bal+=x;
}
无效显示()
{
cout可以使用参考文献来完成
#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;
}
#包括
#包括
使用名称空间std;
阶级工厂
{
公众:
工厂(){};
无效余额(整数x)
{
bal+=x;
}
无效显示()
{
cout您必须创建变量balance一个静态变量,然后用类名和::operator调用它您必须创建变量balance一个静态变量,然后用类名和::operator调用它,使用静态变量是危险的。如果您以后想使用不同的工厂,每个工厂都有自己的对于Medecine对象,使用静态变量是不可能的,而使用引用则可以。使用静态变量用于此用途是危险的。如果以后要使用不同的工厂,每个工厂都有自己的Medecine对象集,则使用静态变量是不可能的,而使用引用则可以。