Maison  >  Article  >  développement back-end  >  Comment puis-je surcharger le `operator[]` avec plusieurs arguments en C ?

Comment puis-je surcharger le `operator[]` avec plusieurs arguments en C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-20 02:40:02153parcourir

How Can I Overload the `operator[]` with Multiple Arguments in C  ?

Opérateur[] avec plusieurs arguments en C

Vous pouvez rencontrer des difficultés lorsque vous tentez de définir un opérateur de tableau en C qui prend plusieurs arguments. En utilisant la syntaxe suivante :

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];
}

Vous recevrez un message d'erreur :

error C2804: binary operator '[' has too many parameters

Solution de contournement (Pre-C 23)

Avant en C 23, la surcharge de l'opérateur[] avec plusieurs arguments n'était pas possible. Au lieu de cela, vous pouvez surcharger Operator().

Résolution (C 23)

Cependant, à partir de C 23, vous pouvez surcharger directement Operator[]. Ceci est démontré dans l'exemple cppreference ci-dessous :

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 };
    }
};

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn