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