there's a operator overloading that I made for some assignment and it's supposed to print whether two intervals has anything in common. And the output isn't printing in the right order because as i've noticed it's printing what i want during the call of the operator overloading function and only then the actual text,and after that it still returns and prints 'Invalid Interval' even tho i didnt even return any. on the main :
cout << "interval13 && interval24 = " << (interval13 && interval24) << endl;
cout << "interval13 && interval45 = " << (interval13 && interval45) << endl;
cout << "interval24 && interval45 = " << (interval24 && interval45) << endl;
cout << "interval24 && interval13 = " << (interval24 && interval13) << endl;
cout << "interval45 && interval13 = " << (interval45 && interval13) << endl;
cout << "interval45 && interval24 = " << (interval45 && interval24) << endl;
The function:
template <class T>
Interval<T> Interval<T>::operator&&(Interval<T> &i1) {
if (b < i1.a) {
cout<<"EMPTY";
exit;
}
else if (b == i1.a) {
cout << "EMPTY";
exit;
}
else if (a > i1.b) {
cout << "EMPTY";
exit;
}
else if (a == i1.b) {
cout << "EMPTY";
exit;
}
else {
if (a<i1.a){
if (b < i1.b)
return Interval<T>(i1.a, b);
else return Interval<T>(i1.a, i1.b);
}
if (i1.a < a) {
if (i1.b < b)
return Interval<T>(a, i1.b);
else return Interval<T>(a, b);
}
}
}
Output:
intervall3 && interval24 = (2,3) EMPTYintervall3 && interval45 = Invalid Interval EMPTYinterval24 && interval45 = Invalid Interval interval24 && intervall3 (2,3) EMPTYinterval45 && intervall3 = Invalid Interval EMPTYinterval45 && interval24 = Invalid Interval
What did i do wrong? and how can i fix that? thanks.