[英]Type conversions to custom class - C++
我有一類復數,同時以兩種方式將+, -, *, /,=,!=
運算符都裝入了復數和雙精度類型,但是當我編寫complex z = 1
,編譯器給我一個錯誤,說從int
到complex
沒有變量轉換。 雖然,它接受代碼
complex z;
z = 1;
一切正常。 如何解決此錯誤?
行complex z = 1
執行復制初始化 。 您將需要一個適當的構造函數:
complex::complex(int i) // or double or whatever is convertible to int by
{ // implicit conversion
// your code
}
這與
complex z;
z = 1;
這是需要賦值運算符的賦值 (對先前默認構造的對象的賦值)。
您可能想要添加一個接受double
的構造函數:
class complex
{
public:
complex(double d) : _real(d), _imag(0) { }
...
};
但是要小心:這可能會使int
傳遞給需要complex
地方,因為構造函數將執行隱式轉換。
您需要編寫適當的構造函數。
class complex {
public:
complex(double x) {
// ...
}
// ...
};
您需要一個需要double
的構造函數。
class complex
{
public:
complex( double d );
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.