我想将对象转换为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,所以我不知道它是否可以与上述实施一起争论。
感谢您的帮助!
答案 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);