Я только начал смотреть на структуры в C ++ и подумал, что мог бы попытаться выяснить, как перегрузить оператор вставки потока для объекта Линия (который сам содержит объекты Точка ). Я думаю, что мне нужно какое-то объявление о перегрузке в строке? а возможно точка? Я нашел несколько похожих вопросов, но, если честно, я вообще не могу этого понять.
Это очень простая программа, так что, надеюсь, кто-нибудь найдет время, чтобы взглянуть на нее и объяснить, как мне поступить?
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::istream;
//define Point & Line type
struct Point{
float x, y;
};
struct Line{
Point p1, p2;
istream& operator>>( istream& in, const Line& line); //something like this here?
};
//function declarations
Point calcMidpoint(const Line& rline);
//operator overload
istream& operator>>( istream& in, const Line& line){
in >> line.p1.x >> line.p1.y >> line.p2.x >> line.p2.y;
return in;
}
//MAIN
int main(){
Line line;
cout << "please enter one pair of x and y values followed by another like so (x1 y1 x2 y2): ";
cin >> line;
//get midpoint of line
Point mp;
mp = returnMidpoint(line);
cout << "The Midpoint is.. (" << mp.x << " " << mp.y << ")" <<endl;
return 0;
}
//can be used in a large expression at the expence of creating temp instances
Point calcMidpoint(const Line& rline){
Point midpoint;
midpoint.x = (rline.p2.x + rline.p1.x) / 2;
midpoint.y = (rline.p2.y + rline.p1.y) / 2;
return midpoint;
}