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

时间:2018-10-27 19:35:27

标签: c++

我有一个带有构造函数的类,该构造函数正在调用方法。该方法返回一个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);
}

但是,这迫使我有一个需要参数的构造函数,但我想有一个不带任何参数的构造函数。这有可能实现吗?

谢谢!

4 个答案:

答案 0 :(得分:1)

构造函数无法返回值。

但是,您可以根据需要使用全局变量。

很丑,但是能干。

//p[@class='product-desc' and not(span/@class='product-model')]

答案 1 :(得分:1)

这是不可能的,因为构造函数无法返回值。

您可以做的是将其存储在其他位置。当我们在这里谈论创建对象时,一个显而易见的解决方案似乎是将结果存储在对象中。当然,这会使您的对象更大。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您不需要从构造函数返回任何内容。在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;