簡體   English   中英

帶參數的 C++ 轉換運算符

[英]C++ conversion operator with parameter

有沒有辦法定義帶參數的轉換運算符?

這是我的用例:

class RGBColor
{
    operator RGBAColor (const float alpha = 1.0) const noexcept;
}

我有 HSB 和 RGB 顏色的轉換運算符,以及 RGBA 到 RGB 的轉換操作符(通過刪除 alpha),但是我很難從 RGB 轉換為 RGBA,因為我需要能夠提供 alpha 作為參數(而不是總是默認為一)。

我假設我將不得不退回到以下內容:

RGBAColor ToRGBAColor (const float alpha = 1.0) const noexcept;

但是,我更喜歡使用標准的 C++ 轉換,所以我只是想知道是否有任何方法可以使用帶參數的轉換運算符。

這實際上就是構造函數的用途。

聲明並定義一個。

無法將附加參數傳遞給強制轉換運算符。 語法不允許這樣做。

如評論和其他答案中所述,請提供適當的構造函數:

struct RGB {
    float r_;
    float g_;
    float b_;
};

struct RGBA : RGB {
    float alpha_;

    RGBA(const RGB& rgb) : RGB(rgb), alpha_(1.0) {}
    RGBA(const RGB& rgb, float alpha) : RGB(rgb), alpha_(alpha) {} // <<<<
    RGBA& operator=(const RGB& rgb) {
        *static_cast<RGB*>(this) = rgb;
        alpha_ = 1.0;
        return *this;
    }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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