C で複数の引数を持つ
Operator[]
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
回避策 (Pre-C 23)
以前C 23 では、複数の引数を使用して Operator[] をオーバーロードすることはできませんでした。代わりに、operator() をオーバーロードできます。
Resolution (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 中国語 Web サイトの他の関連記事を参照してください。