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

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

Patricia Arquette
Patricia Arquette原創
2024-11-20 02:40:02248瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn