Почему бы просто не сделать это:
void Vec3::SetCoord(const Point& pnt)
{
x = pnt.x;
y = pnt.y;
z = pnt.z;
}
ИЛИ ...
Создать новый перегруженный конструктор:
Vec3::Vec3(const Point& pnt)
{
x = pnt.x;
y = pnt.y;
z = pnt.z;
}
Не требуется сумасшедший оператор приведения или оператор равенства,Я бы порекомендовал сделать один из этих способов, его, вероятно, проще всего поддерживать.
Чтобы получить приведенный выше синтаксис equals, нужно добавить оператор преобразования типов, но в Point:
class Point
{
// ....
operator Vec3()
{
return Vec3(this->x,this->y,this->z);
}
};
Выполнение присваивания между двумя объектами подобным образом довольно забавно, не предполагая преобразования типов.Большинство классов ведут себя не так, как синтаксис.
Обратите внимание, что это может вызвать некоторую двусмысленность, и многие уважаемые люди на этом сайте, отвечающие на вопросы по C ++, скажут, что ответ с преобразованием типовможет вызвать всевозможные неприятные проблемы.Так что я бы избежал этого.