IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Probl�me d'initialisation de vector, C++11


Sujet :

C++

  1. #1
    Membre tr�s actif
    Homme Profil pro
    Etudiant en g�nie m�canique
    Inscrit en
    Mars 2011
    Messages
    146
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Etudiant en g�nie m�canique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Par d�faut Probl�me d'initialisation de vector, C++11
    Salut!

    Je rencontre des soucis pour appeler une fonction-membre d'une classe, impl�ment�e comme suit:
    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
    void MenuColonneCentree::SetContenu(vector<string> argCONTENU)
    {   int calc1(argCONTENU.size());
        options=(calc1-(calc1%2))/2;
     
        ligneSelectionnee=0; // Présélection de la première ligne
     
        for (int index(0); index < calc1; index++)
        {   texte[index].setString(argCONTENU[index]);
            posY[index]=(7-options+index)*hauteurTextePrincipal;
        }
     
        etatAnimation=false;
        etatExistence=true;
     
        #ifdef SUIVI
        cout << "MenuColonneCentree, SetContenu OK" << endl;
        #endif
    }
    L'appel est fait comme �a:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    MenuColonneCentree_1.SetContenu({ "", "", "", "", "", "", "", "", "", "LOADING"+points });
    ATTENTION! "points" est de type string =D

    Mais le compilateur ne l'accepte pas.
    L'erreur associ�e � l'appel est la suivante: "error: no matching function tu call to 'MenuColonneCentre::SetContenu(<brace-enclosed initializer list<)'"

    Je suis en train de r��crire mon programme, et le probl�me vient peut-�tre d'ailleurs. Si vous pensez que mon appel est correct, alors je verrai �a apr�s avoir termin� la r��criture.

  2. #2
    Membre Expert
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2011
    Messages
    760
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 760
    Par d�faut
    Cet appel est valide, quelle version du compilo ?

    Sinon, concernant le code (y a du mieux par rapport � avant), regroupe les variables texte et posY dans une structure commune.
    Quel int�r�t aussi de mettre des entr�es de menu vide ? Quel est le type de la variable texte et quel supposition y as-tu attach� (l� je pense � une taille) ?

  3. #3
    Membre �prouv�
    Inscrit en
    Mai 2012
    Messages
    65
    D�tails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 65
    Par d�faut
    Suivant les derniers posts j'ai vu que tu utilises codeblocks, donc je suppose que ton compilateur est MinGW sous Windows (ou GCC sous Linux), quoiqu'il en soit il faut que tu rajoutes dans les options de compilation ceci :

  4. #4
    Membre tr�s actif
    Homme Profil pro
    Etudiant en g�nie m�canique
    Inscrit en
    Mars 2011
    Messages
    146
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Etudiant en g�nie m�canique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Par d�faut
    Citation Envoy� par Danny-k Voir le message
    Suivant les derniers posts j'ai vu que tu utilises codeblocks, donc je suppose que ton compilateur est MinGW sous Windows (ou GCC sous Linux), quoiqu'il en soit il faut que tu rajoutes dans les options de compilation ceci :
    Je me disais justement que le compilateur �tait peut-�tre mal configur� pour cette application.

    Est-ce que tu peux �tre un peu plus pr�cis, s'il-te-pla�t? En fait j'ai pas vraiment id�e de ce que je dois faire pratiquement =)

  5. #5
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    il faut activer le C++11 � la compilation.

    Avec code::blocs, il faut aller cocher la case qui va bien dans les options de compilation.
    Normalement le menu est assez explicite.

  6. #6
    Expert confirm�
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par d�faut
    C'est quand m�me super pr�cis: Danny-k te demande de rajouter la bascule "std" afin de sp�cifier � ton IDE quelle version du C++ tu veux utiliser

  7. #7
    Membre tr�s actif
    Homme Profil pro
    Etudiant en g�nie m�canique
    Inscrit en
    Mars 2011
    Messages
    146
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Etudiant en g�nie m�canique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Par d�faut
    Citation Envoy� par jo_link_noir Voir le message
    Sinon, concernant le code (y a du mieux par rapport � avant), regroupe les variables texte et posY dans une structure commune.
    Tu parles d'une "struct" � la C, ou d'autre chose? (et dans ce cas j'ai pas compris)

    Quel int�r�t aussi de mettre des entr�es de menu vide ?
    Dans cet exemple, il n'y a qu'une ligne visible, mais l� elle est la cinqui�me d'une colonne de 5 lignes (dont 4 sont vides), ce qui la met plus ou moins bas sur l'�cran. C'est un cas particulier; normalement la plupart des lignes sont remplies.

    Quel est le type de la variable texte et quel supposition y as-tu attach� (l� je pense � une taille) ?
    Oui, pardon, tout �a est dans le constructeur de la classe. le type c'est sf::Text, et la taille est donn�e par hauteur/13 (hauteur �tait la hauteur du moniteur, r�cup�r�e avec la classe sf::VideoMode). Tout �a fait partie de SFML.

  8. #8
    Membre tr�s actif
    Homme Profil pro
    Etudiant en g�nie m�canique
    Inscrit en
    Mars 2011
    Messages
    146
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Etudiant en g�nie m�canique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Par d�faut
    Citation Envoy� par foetus Voir le message
    C'est quand m�me super pr�cis: Danny-k te demande de rajouter la bascule "std" afin de sp�cifier � ton IDE quelle version du C++ tu veux utiliser
    using namespace std ? C'est �a une bascule?

  9. #9
    Expert confirm�
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par d�faut
    Citation Envoy� par Armulis Voir le message
    using namespace std ? C'est �a une bascule?
    non de gcc -std=c++11

  10. #10
    Membre tr�s actif
    Homme Profil pro
    Etudiant en g�nie m�canique
    Inscrit en
    Mars 2011
    Messages
    146
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Etudiant en g�nie m�canique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Par d�faut
    �a ?

    Nom : DGimIaDfKoh_prntscrn_01.png
Affichages : 217
Taille : 55,5 Ko

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut
    Oui c'est �a

  12. #12
    Membre tr�s actif
    Homme Profil pro
    Etudiant en g�nie m�canique
    Inscrit en
    Mars 2011
    Messages
    146
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Etudiant en g�nie m�canique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Par d�faut
    Citation Envoy� par jblecanard Voir le message
    Oui c'est �a
    Nan! C'est bon, c'est moi qui ai fait de la merde! xD
    Probl�me r�gl�, merci beaucoup.

    Les questions pos�es � jo_link_noir restent d'actualit� (si �a peut m'aider, je prends =D)

  13. #13
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    Citation Envoy� par Armulis Voir le message
    Tu parles d'une "struct" � la C
    Une struct "tout court" (struct vient de C, mais c'est autant du C que du C++). En g�n�ral, on utilise struct lorsqu'il s'agit d'un petit objet, mais c'est jsute une sorte de convention implicite, rien d'officiel.
    Et c'est bien dans ce sens-l� que je comprend la remarque de jo_link_noir. L'id�e �tant de remplacer 2 tableaux (un pour texte et un pour posY) par 1 seul tableau dont les �l�ments seraient une structure qui contiendrait ces deux donn�es. Quelque chose comme:
    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
    struct LocalizedText
    {
       sf::Text text;
       float posY; // float ou int, selon ce dont a besoin la SFML
       void Update( const std::string & txt, float pos_y )
       {
          text.setString(txt);
          posY = pos_y;
       }
    };
     
    class MenuColonneCentree
    {
    // ton code
     
       std::vector<LocalizedText> localized_text; // <- à la place des 2 tableaux text et posY
    };
    Ensuite tu fais passer tes param�tres de fonctions par r�f�rence constante plut�t que par copie, tu utilises les types qui vont bien, et �a va te donner une fonction qui ressemble � �a:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void MenuColonneCentree::SetContenu(const vector<string> & argCONTENU)
    {   
        size_t calc1 = argCONTENU.size();
        options=(calc1-(calc1%2))/2;
     
        ligneSelectionnee=0; // Présélection de la première ligne
     
        for (int index(0); index < calc1; index++)
            localized_text[index].Update(argCONTENU[index],(7-options+index)*hauteurTextePrincipal);
     
       // etc.
    }
    C'est une fa�on plus orient�e objet pour faire la m�me chose. L'approche objet consiste � cr�er des classes/structures qui r�solvent des probl�mes. Et il ne faut pas tomber dans le pi�ge de l'approche "donn�e": une classe n'a pas pour but de contenir des donn�es, mais de r�soudre des probl�mes, ou de proposer un service (autre fa�on de dire la m�me chose). Contenir des donn�es peut �tre un service, mais c'est un cas particulier. Dans le code que je te propose ci-dessus, la structure LocalizedText fournit des donn�es, mais �galement un service (update), qui va s'occuper de mettre � jour ces donn�es.

  14. #14
    Membre tr�s actif
    Homme Profil pro
    Etudiant en g�nie m�canique
    Inscrit en
    Mars 2011
    Messages
    146
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Etudiant en g�nie m�canique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Par d�faut
    Bien compris si "localized_text" est bien la structure dont tu parlais. Je vais revoir �a. Effectuvement, �a pourrait m'aider � �viter de traiter toutes les donn�es une-�-une =D

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 03/02/2011, 18h09
  2. Probl�me d'initialisation variable tableau
    Par HeZiX dans le forum Langage
    R�ponses: 3
    Dernier message: 08/06/2005, 16h30
  3. Probl�me d'utilisation de vector
    Par loupdeau dans le forum SL & STL
    R�ponses: 12
    Dernier message: 28/02/2005, 12h05
  4. Comment initialiser un vector � sa cr�ation ?
    Par Clad3 dans le forum SL & STL
    R�ponses: 7
    Dernier message: 10/12/2004, 15h01
  5. R�ponses: 5
    Dernier message: 16/11/2004, 12h10

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