[英]C++ cout not printing in the desired order
我为某些赋值做了一个运算符重载,它应该打印两个间隔是否有任何共同点。 并且输出没有以正确的顺序打印,因为我注意到它在调用运算符重载函数期间打印我想要的内容,然后才打印实际文本,之后它仍然返回并打印“无效间隔”甚至我什至没有返回任何。 主要:
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;
功能:
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);
}
}
}
输出:
intervall3 && interval24 = (2,3) EMPTYintervall3 && interval45 = Invalid Interval EMPTYinterval24 && interval45 = Invalid Interval interval24 && intervall3 (2,3) EMPTYinterval45 && intervall3 = Invalid Interval EMPTYinterval45 && interval24 = Invalid Interval
我做错了什么? 我该如何解决? 谢谢。
在&&
运算符的定义中,您使用的是std::cout
资源。 然而,在&&
的调用中,您需要一个字符串来传递给高级std::cout
调用。 您需要重写函数以返回std::string
对象。 尝试摆脱模板函数中的std::cout
调用。 然而,通常, &&
运算符是一个逻辑布尔运算符,所以你应该真正纠正一个返回布尔值的函数,给定 2 个输入。
像这样的东西:
std::cout << cout << "interval13 && interval24 = " << (doCompare(interval13, interval24) ? "EMPTY" : "NONEMPTY") << endl;
其中doCompare()
接受函数参数是返回bool
。
我会尝试为您提供一个可行的解决方案,但目前,您的代码无法编译,我看不到您的最终目标或所需的功能。
更多问题:
对exit()
的调用应该只在main()
调用,而不是在main()
之外定义的辅助函数中调用。 您应该调用return
,然后返回任何函数返回类型(我不知道您想返回什么)。
<<
是与 C++ 流(如ostream
和istream
一起使用的运算符。 对象std::cout
是输出到控制台的输出流。
我无法在当前状态下运行您的代码,但我建议您对运算符重载进行更多研究。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.