调用一个方法会将输出返回到同一类c++的另一个方法中
Calling a method return output into another method of the same class c++
下面的代码尝试添加两个数字。为了好玩,我想建立一个这样做的类。
因此,我有一个方法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;
将最后一个值写入标准输出
这是一种方法。另一个是使用您已经定义的mA
和mB
成员。add
的功能体变为
return mA = a + mB = b;
这是您操作员优先知识的真正试金石。这具有不需要额外字段的优点,因为您可以编写std::cout << "Result is " << mA + mB;
。但是,你要有效地计算两次加法,这很麻烦。
还要考虑多线程的含义。
我们有两种方法来实现所需的结果,
-
从getAdd()调用函数add(),为此您必须更改getAdd(()的定义以包含两个参数。
void Addition::getAdd(双a,双b)const{
std::cout<lt;"结果是"<lt;添加(a,b)<lt;std::endl;}
(或)
- 将结果存储在变量中并打印出来。有两种方法
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);
}
- 获取从C++中同一类中的构造函数调用的方法返回的值
- 使用同一类中的方法重新分配字段时出现问题
- 有没有办法从同一类中的函子调用类方法?
- 从同一类中的另一个方法调用方法时出错
- C++采用同一类实例的类方法
- 如何将一个方法中的值返回到同一类的另一个方法
- 如何将数据从公共方法添加到同一类中的私有成员数组中?
- 什么可能导致方法不<<同一类中的字符串?
- Qt时隙方法(这是另一类)在发射信号时不触发
- 为什么pthread_create不在同一类中采用我的方法
- 有什么方法可以测试来自同一类的两个作业对象吗
- 将同一类的方法实现放在不同的对象文件中
- 一个类应使用功能指针调用另一类的方法
- 在模板类中:使用类方法作为另一类方法的模板参数
- 如何使一个方法在新线程中调用同一类中的另一个方法
- 方法无法访问同一类的成员变量 (C++)
- 同一类的不同方法中的指针向量
- 同一类中的虚拟方法与非虚拟方法
- 来自同一类的C++方法调用
- 向量中另一类的重音方法