C++11 从“返回答案”;“无效”;转到另一个函数

C++11 从“返回答案”;“无效”;转到另一个函数,c++11,C++11,我有一个问题,我如何才能返回答案来显示,因为我一直得到一个错误,void不能返回一个变量。 如何将其发送到显示功能 void Rational::add(const Rational&h2) { int num = 0; int dem = 0; add(h2); int P = num * h2.dem + h2.num*dem; int Q = dem*h2.dem; }

我有一个问题,我如何才能返回答案来显示,因为我一直得到一个错误,void不能返回一个变量。 如何将其发送到显示功能

 void Rational::add(const Rational&h2)
    {

        int num = 0;
        int dem = 0;
        add(h2);
        int P = num * h2.dem + h2.num*dem;
        int Q = dem*h2.dem;


    }

    void display() const; // _p:_q
    {
         if (Q == 1) // e.g. fraction 2/1 will display simply as 2
                cout << P << endl;
            else
                cout <<P << "/" << Q << endl;
    }
voidrational::add(constrational&h2)
{
int num=0;
int-dem=0;
添加(h2);
int P=num*h2.dem+h2.num*dem;
int Q=dem*h2.dem;
}
无效显示()常量;//_p:_q
{
如果(Q==1)//例如,分数2/1将简单地显示为2

coutvoid是您定义的函数的返回类型,void还意味着您不返回任何内容。如果您有一个函数“int Rational::add(**),那么您可以从该函数返回int

 void Rational::add(const Rational&h2)
    {

        int num = 0;
        int dem = 0;
        add(h2);
        int P = num * h2.dem + h2.num*dem;
        int Q = dem*h2.dem;


    }

    void display() const; // _p:_q
    {
         if (Q == 1) // e.g. fraction 2/1 will display simply as 2
                cout << P << endl;
            else
                cout <<P << "/" << Q << endl;
    }
从我看来,您有一些问题:

  • 从add()函数内部调用add(),这将一直循环,直到出现堆栈溢出

  • 从我所看到的,你有一个变量Q和p,你想显示它们,display不是一个属于这个类的函数,所以它不能访问变量Q和p,我假设它们是在你的头中定义的

  • 如果在头文件中定义了Q和p,那么函数add()就不会写入它们函数定义一个同名的新变量,写入此局部变量不会改变您可能要写入的Q和P。要解决此问题,您只需不再定义Q和P,只需在不使用int的情况下写入即可

    p=num*h2.dem+h2.num*dem

    Q=dem*h2.dem


我最终发现了自己所有的错误,非常感谢您的帮助。