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

Calling a method return output into another method of the same class c++

本文关键字:方法 一类 c++ 另一个 输出 一个 返回 调用      更新时间:2023-10-16

下面的代码尝试添加两个数字。为了好玩,我想建立一个这样做的类。

因此,我有一个方法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 addedn";
    std::cin >> num_a;
    std::cout << "Enter second number to be addedn";
    std::cin >> num_b;
    sum.add(num_a,num_b);
    sum.getAdd();
    return 0;
} 

将参数传递给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 ;
}

如果我说得对,首先需要声明另一个变量(可以是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()。=)

定义另一个类成员double last_added;。在构造函数中将其初始化为合理的值。如果有人在第一次调用add()之前调用getAdd(),则需要这样做:在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;。但是,你要有效地计算两次加法,这很麻烦。

还要考虑多线程的含义。

我们有两种方法来实现所需的结果,

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

    void Addition::getAdd(双a,双b)const{
    std::cout<lt;"结果是"<lt;添加(a,b)<lt;std::endl;}

(或)

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

a。

 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);

我不理解您的方法和Addion类的含义。这很奇怪。

也许你的Addion类只是一个有一些方法而没有任何成员的类。双加法(双a,双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);
}