我有一个带有构造函数的类,该构造函数正在调用方法。该方法返回一个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);
}
但是,这迫使我有一个需要参数的构造函数,但我想有一个不带任何参数的构造函数。这有可能实现吗?
谢谢!
答案 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;