簡體   English   中英

將類型轉換為自定義類-C ++

[英]Type conversions to custom class - C++

我有一類復數,同時以兩種方式將+, -, *, /,=,!=運算符都裝入了復數和雙精度類型,但是當我編寫complex z = 1 ,編譯器給我一個錯誤,說從intcomplex沒有變量轉換。 雖然,它接受代碼

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM