我有两个类,分别叫做PowerballLottery和PowerballTicket。在PowerballLottery内部有一个名为quickPick的成员函数,该函数将随机选取6个有效的整数并将它们存储在PowerballTicket中。6个int mBall1, mBall2, mBall3, mBall4, mBall5 and mPowerball在PowerballTicket中初始化,类PowerballTicket应存储由quickPick生成的6个随机int的值。如何将PowerballTicket内部6个int的对象传递给PowerballLottery,以便quickPick可以修改它们?
发布于 2016-02-23 20:14:54
不需要将数字传递给quickPick()。该函数可以只生成一个PowerballTicket对象并返回它。然后将新值分配给旧的licket对象。
struct PowerballTicket
{
int mBall1 = 0;
int mBall2 = 0;
int mBall3 = 0;
int mBall4 = 0;
int mBall5 = 0;
int mPowerBall = 0;
PowerballTicket(int b1, int b2, int b3, int b4, int b5, int pb)
: mBall1(b1),
mBall2(b2),
mBall3(b3),
mBall4(b4),
mBall5(b5),
mPowerBall(pb)
{
}
};
class PowerballLottery
{
public:
PowerballTicket quickPick()
{
// generate numbers
// then create a PowerballTicket object and return it
return PowerballTicket(1, 2, 3, 4, 5, 1000);
}
};当您想要更改PowerballTicket对象时,只需执行以下操作:
PowerballTicket ticket;
PowerballLottery lottery;
ticket = lottery.quickPick();发布于 2016-02-23 19:34:00
使PowerballLottery成为PowerballTicket的成员
发布于 2016-02-23 19:42:18
通常,您不会将变量传递给其他类,尽管这是可能的
如果你声明彩票是票证的“朋友”,它可以访问它的成员,即使他们是私有的
看看这个例子:
#include <iostream>
class changer;
class fixed {
friend class changer;
public:
fixed(int x) : m_x(x) { } ;
int get() { return m_x; };
private:
int m_x;
};
class changer
{
public:
void change(fixed& item, int new_value);
};
void changer::change(fixed& item, int new_value)
{
item.m_x = new_value;
}
int main() {
fixed one(1);
changer two;
std::cout << one.get() << "\n";
two.change (one, 2);
std::cout << one.get() << "\n";
return 0;
}change类被声明为友元,因此可以用来更改其成员;
在您的情况下(如果我理解您想要的),如果您向Ticket添加一个setter函数,并为生成的数字调用它,就会简单得多
PowerballTicket::setBalls(int b1, int b2, int b3, int b4, int b5, int pb)
{
mBall1 = b1;
mBall2 = b2;
mBall3 = b3;
mBall4 = b4;
mBall5 = b5;
mPowerball = pb;
}https://stackoverflow.com/questions/35575626
复制相似问题