1. #1
    Membre régulier Avatar de BioKore
    Homme Profil pro
    Ingénieur généraliste
    Inscrit en
    septembre 2016
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur généraliste
    Secteur : Conseil

    Informations forums :
    Inscription : septembre 2016
    Messages : 87
    Points : 102
    Points
    102

    Par défaut surcharge des opérateurs "{ }"

    Bonjour à tous,

    N'ayant jamais vu de surcharge des opérateurs "accolades" { et } , j'imagine qu'il n'est pas possible de surcharger ces derniers. Cependant, l'affectation d'un tableau (ainsi que d'un vecteur), il est possible d'utiliser ces accolades pour renseigner les valeurs de ces derniers.

    Réalisant actuellement une classe "matrice", cela me simplifierais la vie de pouvoir utiliser ces fameuses accolades... Vous aurez compris que ce n'est pas tant l'utilisation des accolades en elles même qui m'intéresse, mais une affectation multiple.

    Pour le moment, chaque élément de ma matrice est initialisé indépendamment via operator () mais j'aimerais pouvoir faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     matrice(){1,2,8}{1,4,12};
    ou un équivalent pour initialiser une matrice 2*3.

    Est-ce possible ?

    Merci.

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    5 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 5 371
    Points : 23 007
    Points
    23 007

    Par défaut

    L'accolade n'est pas un opérateur. Ces accolades représentent l'initializer-list.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre expert
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    avril 2016
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : avril 2016
    Messages : 696
    Points : 3 075
    Points
    3 075

    Par défaut

    Bonjour,

    Voici un bout de code qui répond au besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #include <cassert>
    #include <initializer_list>
    #include <iostream>
    #include <vector>
     
    class Matrice {
    public:
    	explicit Matrice(std::initializer_list<std::vector<int>> lignes) :
    		m_nbLignes{lignes.size()},
    		m_nbColonnes{0}
    	{
    		if(m_nbLignes > 0)
    			m_nbColonnes = lignes.begin()->size();
    		for(auto const& ligne : lignes) {
    			assert(ligne.size() == m_nbColonnes);
    			for(auto const& element : ligne)
    				m_elementsLigneParLigne.push_back(element);
    		}
    	}
    	void print(std::ostream& os) const {
    		for(size_t lig = 0; lig < m_nbLignes; ++lig) {
    			for(size_t col = 0; col < m_nbColonnes; ++col)
    				os << m_elementsLigneParLigne[col*m_nbLignes + lig] << ' ';
    			os << '\n';
    		}
    	}
    private:
    	size_t           m_nbLignes;
    	size_t           m_nbColonnes;
    	std::vector<int> m_elementsLigneParLigne;
    };
     
    int main() {
    	auto const mat = Matrice{ {1, 2, 3}, {4, 5, 6} };
    	mat.print(std::cout);
    	return 0;
    }

  4. #4
    Membre régulier Avatar de BioKore
    Homme Profil pro
    Ingénieur généraliste
    Inscrit en
    septembre 2016
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur généraliste
    Secteur : Conseil

    Informations forums :
    Inscription : septembre 2016
    Messages : 87
    Points : 102
    Points
    102

    Par défaut

    Super,

    Merci à vous deux ! Je vais étudier ça de plus près.



    Sujet résolu !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. surcharge des opérateurs
    Par Arson dans le forum C++
    Réponses: 9
    Dernier message: 30/05/2008, 11h40
  2. Réponses: 2
    Dernier message: 11/01/2008, 10h40
  3. Réponses: 7
    Dernier message: 02/12/2007, 21h43
  4. Surcharge des opérateurs ?
    Par kedare dans le forum Ruby
    Réponses: 3
    Dernier message: 06/11/2006, 23h47
  5. Variables polyvalentes et surcharge des opérateurs
    Par Antoine_935 dans le forum C++
    Réponses: 14
    Dernier message: 08/09/2006, 12h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo