键入转换为自定义类 - C ++

时间:2013-03-22 17:13:43

标签: c++ variables type-conversion

我有一类复数,在两种方式上都加载了复杂和双重类型的+, -, *, /,=,!=运算符但是当我编写代码complex z = 1时,编译器给出了一个错误,说明有没有从intcomplex的变量转换。虽然,它接受代码

complex z;
z = 1;

一切正常。我该如何解决这个错误?

4 个答案:

答案 0 :(得分:2)

complex z = 1Copy Initialization。你需要一个合适的构造函数:

complex::complex(int i) // or double or whatever is convertible to int by
{                       // implicit conversion
    // your code
}

这与

不同
complex z;
z = 1;

赋值(对于先前默认的构造对象),需要赋值赋值运算符。

答案 1 :(得分:1)

您可能需要添加一个接受double的构造函数:

class complex
{
public:
    complex(double d) : _real(d), _imag(0) { }
    ...
};

但要小心:这将使得int可能会在complex的任何地方通过,因为您的构造函数将执行隐式转换。

答案 2 :(得分:0)

您需要编写适当的构造函数。

class complex {
public:
    complex(double x) {
        // ...
    }

    // ...
};

答案 3 :(得分:0)

您需要一个带double

的构造函数
class complex
{
public:
    complex( double d );
};