c ++ operator =从object转换为double

时间:2017-12-25 22:39:58

标签: c++ type-conversion operators

我想将对象转换为double值。 它看起来如下 - > ClassA clsA(1,2,3);

double result = clsA;

我在头文件中写了这样的内容:

const double operator= (const ClassA&);

并在cpp文件中实现:

const double ClassA::operator= (const ClassA& a) {
    /* here I made some math calculation on instance 'a' and the result is double value *\
   return doubleValue; 
}

但是它不会工作,我不知道做出来是否是个好主意,我也使用operator =将一个对象分配给另一个例子 - > objA = objB,所以我不知道它是否可以与上述实施一起争论。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您想要编写转换(或转换)运算符:

// integer division/multiplication
// computes (num_*fac_)/div_
struct A
{
    int num_, fac_, div_;
    A (int num, int fac, int div) : num_(num), fac_(fac), div_(div) {};

    // convert to double 
    operator double() const { return double(num_ * fac_) / double(div_); }
};

int main()
{
    A a(1, 2, 3);
    volatile double f = a;
    return f;
}

如果你想强制调用者使显式转换加倍(为了减少意外隐式转换加倍的风险,请使操作符显式。

explicit operator double() const { return double(num_ * fac_) / double(div_); 

要强制进行强制转换,请使用static_cast

double f = static_cast<double>(a);