2013-03-22 157 views
0

我有一類複數,加載+, -, *, /,=,!=操作符在兩種方式都有複雜和雙重類型,但是當我編寫代碼complex z = 1時,編譯器給我一個錯誤,說沒有從intcomplex的可變轉換。雖然,它接受代碼類型轉換爲自定義類 - C++

complex z; 
z = 1; 

和一切工作正常。我該如何解決這個錯誤?

回答

0

你需要寫一個合適的構造函數。

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

    // ... 
}; 
1

您可能需要添加一個構造函數,接受double

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

要小心,雖然:這將使其有可能通過一項int只要一complex預期,因爲你的構造將執行隱式轉換。

0

您需要一個構造函數,它需要一個double

class complex 
{ 
public: 
    complex(double d); 
}; 
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; 

這是分配(到以前默認構造的對象),需要一個賦值操作符不同。