Multi-Argument-Array-Operator in C ?
In C können Operatoren überladen werden, um benutzerdefiniertes Verhalten für integrierte Operatoren bereitzustellen, z []. Vor C 23 war es jedoch nicht möglich, [] zu überladen, um mehrere Argumente zu akzeptieren.
Eingeschränkte Unterstützung vor C 23
Versuche, ein Multi-Argument zu definieren [] Der Operator würde zu einem Compilerfehler führen, wie im Beispielcode zu sehen ist:
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]; }
Dieser Code löst den aus Fehler:
error C2804 binary operator '[' has too many parameters
Workaround vor C 23
Als Workaround könnte man stattdessen den ()-Operator überladen:
T& operator()(const int i, const int j, const int k) { return m_cells[k*m_resSqr+j*m_res+i]; }
Unterstützung in C 23
Ab C 23 umfasst die Sprache Unterstützung für []-Operatoren mit mehreren Argumenten. Infolgedessen wäre der zuvor gezeigte Code gültig und würde die direkte Übergabe mehrerer tiefgestellter Argumente an den []-Operator ermöglichen.
Das obige ist der detaillierte Inhalt vonWie geht C mit Array-Operatoren mit mehreren Argumenten um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!