0

我有一个笛卡尔类的代码,现在我想添加一个成员赋值来将 coord1 的值设置为 coord2。我不太确定如何去做。为类对象编写成员赋值的语法是什么?我会对类本身进行更改,还是将它们放在主函数中?

#include <iostream>
using namespace std;

class Cartesian
{
private:
    double x;
    double y;

public:
    Cartesian( double a = 0, double b = 0) : x(a), y(b){}

    friend istream& operator>>(istream&, Cartesian&);
    friend ostream& operator<<(ostream&, const Cartesian&);
};

istream& operator>>(istream& in, Cartesian& num)
{
    cin >> num.x >> num.y;
    return in;
}

ostream& operator<<( ostream& out, const Cartesian& num)
{
    cout << "(" << num.x << ", " << num.y << ")" << endl;
    return out;
}

int main()
{
Cartesian   coord1, coord2;

    cout << "Please enter the first coordinates in the form x y" << endl;
    cin >> coord1;

    cout << "Please enter the second coordinates in the form x y" << endl;
    cin >> coord2;

    cout << coord1;
    cout << coord2;

    return 0;
}
4

2 回答 2

2

用简单的方法来做:public通过使用 astruct并省略访问说明符来创建所有成员。如果您仍然提供完全访问权限,则数据隐藏没有意义。

此外,您可以省略所有自定义构造函数,因为您可以一次分配所有成员而无需。

于 2014-04-06T21:56:33.480 回答
1

只需将 get 和 set 方法添加到您的类

void Cartesian::SetX(double new_x)
{
    x = new_x;
}

double Cartesian::GetX()
{
    return x;
}

GetY()和的类似函数SetY(double y)。这将使您能够在需要时访问和设置任何您想要的值x和值。y

或者,只需将这些成员上的访问说明符更改为public而不是private.

另外,请注意,operator=()如果您将一个实例分配给另一个实例,则您的类有一个默认值,它将按成员复制成员Cartesian

因此,如果你有

 Cartesian point1(1.0,2.0);
 Cartesian point2(4.5,4.3);

你可以简单地分配point1point2

 point2 = point1;
于 2014-04-06T21:57:10.060 回答