调用方法将输出返回到同一类c ++的另一个方法

时间:2016-01-05 11:09:12

标签: c++ class

下面的代码尝试添加两个数字。为了它的乐趣,我想建立一个能够做到这一点的课程。

所以,我有方法add添加2个数字并返回result 我希望方法getAdd能够打印add方法的返回输出。

我该怎么做?

以下是代码

#include <iostream>
#include <string>

class Addition 
{
    public:
        Addition(double a=0, double b=0);
        double add(double a, double b);
        void getAdd() const;

    private:
        double mA;
        double mB;
};

Addition::Addition(double a, double b) : mA(a), mB(b) {}

double Addition::add(double a, double b)
{
    double result = a + b;

    return result;

}    

void Addition::getAdd() const
{   

    std::cout << "Result is " << //print here the result output of add method << std::endl ;
}          

int main()
{
    Addition sum;
    double num_a;
    double num_b;
    std::cout << "Enter first number to be added\n";
    std::cin >> num_a;
    std::cout << "Enter second number to be added\n";
    std::cin >> num_b;
    sum.add(num_a,num_b);
    sum.getAdd();

    return 0;

} 

5 个答案:

答案 0 :(得分:2)

将参数传递给getAdd?

void Addition::getAdd(double a, double b) const
{
   std::cout << "Result is " << add(a,b);
}

存储结果?

class Addition 
{
    public:
        Addition(double a=0, double b=0);
        double add(double a, double b);
        void getAdd() const;

    private:
        double mResult;
};

double Addition::add(double a, double b)
{
    mResult = a + b;

    return mResult ;
}    
void Addition::getAdd() const
{
   std::cout << "Result is " << mResult ;
}

答案 1 :(得分:1)

如果我说得对,首先你需要声明另一个变量(它可以是double result;)。而不是使用名为result的局部变量,而是使用刚刚创建的变量。 你的课程将是:

class Addition 
{
    public:
        Addition(double a=0, double b=0);
        double add(double a, double b);
        void getAdd() const;

    private:
        double mA;
        double mB;
        double result;
};

你的add()方法是:

double Addition::add(double a, double b)
{
    result = a + b;

    return result;

}    

你的getAdd()将是:

void Addition::getAdd() const {   

    std::cout << "Result is " << result << std::endl ;
}  

你需要这个,因为你的getAdd()是一个const函数,它不能直接调用add()。 =)

答案 2 :(得分:1)

定义另一个班级成员double last_added;。将它初始化为构造函数中的合理内容。如果有人在第一次调用getAdd()之前调用add(),则需要这样做:在C ++中未读取未初始化变量的行为。

然后,在add函数中,将return替换为

return last_added = result; /*the single = is deliberate*/

您可以重构getAdd(),以返回该值:

return last_added;

或使用std::cout << "Result is " << last_added;

将最后一个值写入标准输出

这是一种方法。另一个是使用您已定义的mAmB成员。 add的函数体变为

return mA = a + mB = b;

这是您的运营商优先知识的真正试金石。这样做的好处是您不需要额外的字段,因为您可以编写std::cout << "Result is " << mA + mB;。但是,你有效地计算了两次加法,这很麻烦。

还要考虑多线程的含义。

答案 3 :(得分:1)

我们有两种方法可以达到预期的效果,

  1. 从getAdd()调用函数add(),为此您必须更改getAdd()的定义以包含两个参数。

    void Addition :: getAdd(double a,double b)const {
        std :: cout&lt;&lt; “结果是”&lt;&lt;添加(A,B)&LT;&LT; std :: endl; }

  2. (或)

    1. 将结果存储在变量中并打印出来。它有两种方法
    2. 一个。

       class Addition 
      {
          public:
              Addition(double a=0, double b=0);
              double add(double a, double b);
              void getAdd() const;
      
          private:
              double mA;
              double mB;
              double add;
      };
      
      Addition::Addition(double a, double b) : mA(a), mB(b) {}
      
      double Addition::add(double a, double b)
      {
          add = a + b;
      
          return add;
      
      }    
      
      void Addition::getAdd() const
      {   
      
          std::cout << "Result is " << add() << std::endl ;
      } 
      

      在这种情况下,请务必先调用add()然后再调用getAdd()

      sum.add(num_a,num_b);
      sum.getAdd();
      

      将打印其他垃圾值。

      另一种选择如下

       class Addition 
      {
          public:
              Addition(double a=0, double b=0);
              double add(double a, double b);
              void getAdd() const;
      
          private:
              double mA;
              double mB;
              double add;
      };
      
      Addition::Addition(double a, double b) : mA(a), mB(b) {}
      
      double Addition::add(double a, double b)
      {
          double result =  a + b;
      
          return result;
      
      }    
      
      void Addition::getAdd(double a, double b) const
      {   
          add = add(a,b)
          std::cout << "Result is " << add << std::endl ;
      } 
      

      最后打电话     getAdd(A,B);

答案 4 :(得分:1)

我不明白你的方法和你的Addtion类的含义。 这很奇怪。

也许你的Addtion类只是一个没有任何成员的类。 double add(double a,double b)函数足以让你得到两个双变量的总和。 void getAdd(double a,double b)函数可能会打印一些关于两个双变量之和的信息。

class Addtion
{
public:
    static double add(double a, double b);
    static void getAdd(double a, double b);
};

或者,也许您可​​以使用命名空间。你真正需要的只是一些功能,而不是带有成员的类。

namespace myaddtion
{
    double add(double a, double b);
    void addinfo(double a, double b);
}