获取从C++中同一类中的构造函数调用的方法返回的值

Get the value that is returned from a method that is called from a constructor in the same class in C++

本文关键字:函数调用 方法 返回 一类 C++ 获取      更新时间:2023-10-16

我有一个类,它的构造函数正在调用一个方法。这个方法返回了一个double,是否有可能在类之外获得方法的返回值?

考虑这样一个类:

SampleClass::SampleClass() {
SampleMethod(); //This method is returning a double
}

然后,我会从main中以某种方式获得该方法返回的值,并将其存储在double中。

int main(){
double val = SampleClass sample;
}

这是不可能的,就像我在代码剪辑中所做的那样,但我想用类似的方式来做。

我可以这样做:

SampleClass::SampleClass(double &val) {
val = SampleMethod(); //This method is returning a double
}

然后从main调用它,如下所示:

int main(){
double val{0}
SampleClass sample(val);
}

但这迫使我有一个需要参数的构造函数,但我希望有一个不接受任何参数的构造函数。这有可能实现吗?

谢谢!

构造函数不能返回值。

但是,如果您愿意,可以使用全局变量。

丑,但能胜任工作。

#include <iostream>
using namespace std;
double ret;
struct SampleClass{
SampleClass(){
ret=magicFunction();
}
double magicFunction(){
return 2.5;
}
};
int main() {
SampleClass sample;
std::cout<<ret;
return 0;
}
这是不可能的,因为构造函数不能返回值。

你能做的就是把它存放在其他地方。当我们在这里讨论创建对象时,一个显而易见的解决方案似乎是将结果存储在对象中。这当然会让你的物体变大。

class SampleClass {
public:
SampleClass()
{
result = SampleMethod();
}
double SampleMethod()
{
return 12.34;
}
double GetResult()
{
return result;
}
private:
double result;
}

所以你可以这样做:

int main() {
SampleClass sample;
double val = sample.GetResult();
}

C++构造函数不能返回值。被语言设计所阻止。

您不需要从构造函数返回一些东西。在C++中,您必须编写正确的类,该类可以复制并返回所需类型的值。简单样本:

class SampleClass
{
double _Value;
double method ()
{
_Value *= 10; // Do something
return _Value;
}
public:
double operator = (double _v) 
{
_Value = _v; return _Value;
}
operator double () 
{
return method();
}
};

使用样品:

SampleClass a;
a = 1.1;
double b = a;