首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将私有成员的对象传递给另一个类的方法?

如何将私有成员的对象传递给另一个类的方法?
EN

Stack Overflow用户
提问于 2016-02-23 18:57:23
回答 5查看 225关注 0票数 0

我有两个类,分别叫做PowerballLotteryPowerballTicket。在PowerballLottery内部有一个名为quickPick的成员函数,该函数将随机选取6个有效的整数并将它们存储在PowerballTicket中。6个int mBall1, mBall2, mBall3, mBall4, mBall5 and mPowerballPowerballTicket中初始化,类PowerballTicket应存储由quickPick生成的6个随机int的值。如何将PowerballTicket内部6个int的对象传递给PowerballLottery,以便quickPick可以修改它们?

EN

回答 5

Stack Overflow用户

发布于 2016-02-23 20:14:54

不需要将数字传递给quickPick()。该函数可以只生成一个PowerballTicket对象并返回它。然后将新值分配给旧的licket对象。

代码语言:javascript
复制
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对象时,只需执行以下操作:

代码语言:javascript
复制
PowerballTicket ticket;
PowerballLottery lottery;

ticket = lottery.quickPick();
票数 1
EN

Stack Overflow用户

发布于 2016-02-23 19:34:00

使PowerballLottery成为PowerballTicket的成员

票数 0
EN

Stack Overflow用户

发布于 2016-02-23 19:42:18

通常,您不会将变量传递给其他类,尽管这是可能的

如果你声明彩票是票证的“朋友”,它可以访问它的成员,即使他们是私有的

看看这个例子:

代码语言:javascript
复制
#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函数,并为生成的数字调用它,就会简单得多

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35575626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档