在函数内返回一整类信息

时间:2013-12-05 15:52:25

标签: c++ pointers encapsulation

所以我一直在研究一个程序,我有一个名为CDistance的类,就在这里,

class CDistance
{
private:
    int feet, inches;
public:
    CDistance();
    CDistance(int, int);
    void setDist();
    void printDist() const;
    CDistance add(const CDistance&) const;
};

我需要做的部分是创建一个包含5个这些对象的数组,在每个对象上设置英尺和英寸,然后将它们添加到一起而不更改原始变量。这是函数定义,正如您所看到的,它正在处理所有常量成员,因此需要确定如何引用变量,但最重要的是,将它们恢复为要返回的CDistance类型。我应该在此函数中创建一个新的CDistance类型来使用ref

CDistance CDistance::add(const CDistance&) const
{

}

这就是我被困住的地方,我对整个指针和封装协议感到困惑。我是编程的新手,并且学到了很难的方法,但是如果有人可以帮我解决这个问题,我会非常感激

2 个答案:

答案 0 :(得分:0)

您可以从函数中简单地return本地结果实例:

CDistance CDistance::add(const CDistance& other) const
{
    CDistance result(*this);

    // Calculate the result using result.feet, result.inches and 
    // other.feet, other.inches
    return result;
}

答案 1 :(得分:0)

  

我应该在此函数中创建一个新的CDistance类型来使用ref

是的,您需要一个新对象来修改并返回:

CDistance add(const CDistance& other) const {
    CDistance result = *this;      // Copy this object
    result.feet += other.feet;     // Add the other object...
    result.inches += other.inches; // ... to the copy
    return result;                 // Return the copy
}

请注意,这并不完整;有一个故意的错误,以及未知数量的意外错误,你需要自己修复。