将一组类对象添加到一个主类对象中

Posted

技术标签:

【中文标题】将一组类对象添加到一个主类对象中【英文标题】:adding an array of class objects into one master class object 【发布时间】:2013-12-06 20:16:27 【问题描述】:

对于一个项目,我必须创建一个包含英尺和英寸变量的类,并且有一个方法可以将这些变量从对象 1 和对象 2 以及对象 3、4 等相加。

CDistance CDistance::add(const CDistance& yourDist) const

    CDistance total;
    total.feet += yourDist.feet;
    total.inches += yourDist.inches;
    /*if (total.inches > 12)
    
        total.feet += (total.inches / 12);
        total.inches = total.inches % 12;
    */
    return total;

这是我添加的方法,这里是主源文件中的一个函数,我在其中处理每个类

void printAndAdd(const CDistance distList[], int size)

    CDistance new_total;
    new_total = distList[0].add(distList[1].add(distList[2].add(distList[3].add(distList[4]))));
    new_total.printDist();

这是我用来在屏幕上打印数据的方法

void CDistance::printDist() const

    cout << "Feet: " << this->feet << "\n\n";
    cout << "Inches: " << this->inches << "\n\n";

我曾考虑在第二行使用 for 循环,但我遇到了一些问题。每当我打印数据时,它都是 0。好像 add 函数不起作用,我不太确定我什至理解我做了什么。从我认为我正在做的事情来看,它正在创建一个新的对象,将引用对象中的变量添加到创建的对象中,注释掉的部分是我现在刚刚取出的部分,稍后会添加,然后它返回物体。当我在我的主源文件中调用该函数时,它会将对象 new_total 设置为等于对象 0、1、2、3 和 4 的总和。我是接近,还是远离实际发生的事情?我还应该解释一下,我只编程了大约一年,这对我来说真的很有趣,但有时自然会很困难,而且我仍在努力掌握 C++ 中类的概念。

【问题讨论】:

【参考方案1】:

问题是您在添加时从不使用实例变量。相反,您总是从一个新铸造的对象开始。试试这个:

CDistance CDistance::add(const CDistance& yourDist) const

    CDistance total(*this);
    total.feet += yourDist.feet;
    total.inches += yourDist.inches;

    this->feet += yourDist.feet;
    this->inches += yourDist.inches;
    return total;

【讨论】:

【参考方案2】:

我已经对您的代码进行了一些操作,看起来这一行应该是不正确的:

CDistance total;

total 的值永远不会被初始化,因此总是会是你的默认构造函数定义的值(可能是 0/0)。因此,该调用的结果将始终以传递给输入的任何内容结束。我想你是打算这样做的:

CDistance total = *this;

这会将英尺一英寸的当前值复制到温度中,然后以下行将添加输入。像您一样通过调用链现在应该按预期连接添加。

【讨论】:

以上是关于将一组类对象添加到一个主类对象中的主要内容,如果未能解决你的问题,请参考以下文章

将一组指针投射到其他对象?

有没有办法将一组表单输入字段作为对象数组发布?

如何将一组 java 对象表示为数据库中其他对象的字段?

我如何将一组对象传递到我的 express/sql 服务器(反应)

尝试将一组对象保存到 Firestore 并将其加载回来

angularjs - 将一组对象(JSON 数据)发布到 PHP 页面