繁体   English   中英

C++ cout 未按所需顺序打印

[英]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++ 流(如ostreamistream一起使用的运算符。 对象std::cout是输出到控制台的输出流。

我无法在当前状态下运行您的代码,但我建议您对运算符重载进行更多研究。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM