Operator[] mit mehreren Argumenten in C
Beim Versuch, einen Array-Operator in C zu definieren, der mehrere Argumente akzeptiert, können Schwierigkeiten auftreten. Verwenden Sie die folgende Syntax:
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]; }
Sie erhalten eine Fehlermeldung:
error C2804: binary operator '[' has too many parameters
Workaround (Pre-C 23)
Prior Bis C 23 war das Überladen von Operator[] mit mehreren Argumenten nicht möglich. Stattdessen können Sie den Operator() überladen.
Auflösung (C 23)
Ab C 23 können Sie jedoch den Operator[] direkt überladen. Dies wird im folgenden cppreference-Beispiel demonstriert:
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 }; } };
Das obige ist der detaillierte Inhalt vonWie kann ich den „Operator[]' mit mehreren Argumenten in C überladen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!