首頁 > 後端開發 > C++ > 如何在 C 中使用多個參數重載「operator[]」?

如何在 C 中使用多個參數重載「operator[]」?

Patricia Arquette
發布: 2024-11-20 02:40:02
原創
211 人瀏覽過

How Can I Overload the `operator[]` with Multiple Arguments in C  ?

C 中具有多個參數的運算子[]

嘗試在C 中定義具有多個參數的陣列運算符時可能會遇到困難。使用以下語法:

const T& operator[](const int i, const int j, const int k) const {
    return m_cells[k*m_resSqr+j*m_res+i];
}

T& operator[](const int i, const int j, const int k) {
    return m_cells[k*m_resSqr+j*m_res+i];
}
登入後複製

您將收到一條錯誤訊息:

error C2804: binary operator '[' has too many parameters
登入後複製

解決方法(C 23 之前)

之前對於C 23,不可能用多個參數重載operator[]。相反,您可以重載operator()。

解決方案(C 23)

但是,從C 23開始,您可以直接重載operator[]。下面的 cppreference 範例對此進行了示範:

struct V3
{
    double x, y, z;

    constexpr V3 operator[](int i) const {
        return { x, y, z }[i];
    }

    // Alternatively, using std::initializer_list:
    friend constexpr std::initializer_list<double> operator()(const V3& v) {
        return { v.x, v.y, v.z };
    }
};
登入後複製

以上是如何在 C 中使用多個參數重載「operator[]」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板