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에서는 여러 인수를 사용하여 연산자[]를 오버로드하는 것이 불가능했습니다. 대신에 연산자()를 오버로드할 수 있습니다.
분해능(C 23)
그러나 C 23부터는 연산자[]를 직접 오버로드할 수 있습니다. 이는 아래 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!