У меня есть код для декартового класса, и теперь я хочу добавить членное присвоение, чтобы установить значения 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;
}
Сделайте это простым способом: сделайте всех участников public
, используя спецификаторы struct
и исключения. Скрытие данных не имеет смысла, если вы обеспечиваете полный доступ в любом случае.
Кроме того, вы можете оставить все пользовательские конструкторы, так как вы можете сразу назначить всех участников.
Просто добавьте методы 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=()
умолчанию operator=()
который будет копировать члены по порядку, если вы назначаете один экземпляр Cartesian
на другой.
Таким образом, если у вас есть
Cartesian point1(1.0,2.0);
Cartesian point2(4.5,4.3);
вы можете просто назначить point1
to point2
на
point2 = point1;