我已经定义了一个重载Complex
运算符的类+
:
Complex operator+(Complex const& x, Complex const& y);
我想定义从double
到Complex
的隐式转换,例如,如果我写c + d
,其中c
是Complex
}和d
double
,它会调用我在上面定义的重载+
并返回Complex
。我怎么能这样做?
答案 0 :(得分:5)
您只需要为它定义构造函数。这被称为"converting constructor"
Complex::Complex(double x)
{
// do conversion
}
这将允许隐式转换,只要您不使用explicit
关键字,这将迫使您必须使用转换来转换。
您还可以定义operator+
Complex operator+(Complex const& x, double y);
Complex operator+(double x, Complex const& y);
答案 1 :(得分:4)
只需为explicit
Complex
添加一个非double
构造函数:
Complex(double value);
编译器会自动使用它将double
隐式转换为Complex
。