Maison >développement back-end >C++ >L'opérateur [] peut-il être surchargé deux fois pour un accès aux tableaux bidimensionnels ?

L'opérateur [] peut-il être surchargé deux fois pour un accès aux tableaux bidimensionnels ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-30 09:19:14444parcourir

Can the [] Operator Be Overloaded Twice for Two-Dimensional Array Access?

Opérateur[][] Surcharge pour les tableaux bidimensionnels

La question se pose : l'opérateur [] peut-il être surchargé deux fois pour activer la notation comme function3 pour un tableau à deux dimensions ?

Réponse : Oui, c'est le cas Possible

Pour y parvenir, on peut surcharger l'opérateur[] pour renvoyer un objet qui propose un autre opérateur [] pour accéder à l'élément souhaité. Voici un exemple de code :

class ArrayOfArrays {
public:
    ArrayOfArrays() {
        _arrayofarrays = new int*[10];
        for(int i = 0; i < 10; ++i)
            _arrayofarrays[i] = new int[10];
    }

    class Proxy {
    public:
        Proxy(int* _array) : _array(_array) { }

        int operator[](int index) {
            return _array[index];
        }
    private:
        int* _array;
    };

    Proxy operator[](int index) {
        return Proxy(_arrayofarrays[index]);
    }

private:
    int** _arrayofarrays;
};

Cela permet une utilisation comme :

ArrayOfArrays aoa;
aoa[3][5];

Notez que ce qui précède est un exemple simplifié ; Une vérification des limites supplémentaires et d'autres fonctionnalités seraient généralement mises en œuvre.

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