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

SL & STL C++ Discussion :

Petit probleme avec un vector


Sujet :

SL & STL C++

  1. #1
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut Petit probleme avec un vector
    Je n'arrive pas à mettre un vecteur en tant que propriété d'un de mes formulaires.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	private:
    	boolean boolSrc;
    	boolean boolRef;
    	vector<int> source;
    erreur :
    error C3633: impossible de définir 'source' en tant que membre d'un 'analyseur::frmCVT' managé
    meme si je met std:: devant j'ai la meme erreur

    Bien sur j'ai mis un include <vector> et si je place la définition du vecteur directement dans une methode de mon formulaire il n'y a pas de probleme :/

  2. #2
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    t'utilises WxWidget???

  3. #3
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par défaut
    Bien sur, je suppose que si tu utilisais un :
    ou si tu définisais toi-même le constructeur par recopie, cela compilerait ?

    Pourtant, je ne vois pas pourquoi un vector n'aurait pas de constructeur par recopie par défaut.

  4. #4
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    en effet ça marche avec un pointeur merci

  5. #5
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Oui, enfin pourquoi stocker un pointeur, alors que l'on souhaite un objet???
    Est-ce vraiment ce que tu souhaites?

  6. #6
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par défaut
    Non, ce n'est pas la solution.
    C'est juste une analyse de l'erreur.

    L'idée c'est que le compilateur rale parce qu'il ne sait pas générer automatiquement un contructeur par recopie. Et il ne sait pas le faire parce qu'il ne sait pas dupliquer le membre de Ce qui est quand même étonnant.
    Car je ne sais pas pourquoi il ne peut pas dupliquer ce membre.

    Quoi qu'il en soit, si tu utilises un pointeur, tu ne fais que masquer le problème dans le sens ou si tu copie ta classe, tu copiera le pointeur et donc tes deux instances pointeront sur le même vector<int>. Ce n'est sans doute pas ce que tu veux.

    Redéfinir toi-même le constructeur par recopie avec un assert statique (confère boost) serait sans doute une solution plus propre, dans le sens où au moins tu ne cache pas le problème, et si un jour tu as besoin de copier ton objet, cela crashera proprement à la compilation.

    Une autre solution "propre" serait de redéfinir toi-même ton constructeur par recopie en implémentant le comportement désiré, mais c'est peut-être du temps perdu si tu es sur de ne jamais vouloir copier ton objet.

    Est-ce que le fait de creuser la question t'intéresse ?
    Est-ce que tu comprends ce dont il est question ?

  7. #7
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    error C3633: impossible de définir 'source' en tant que membre d'un 'analyseur::frmCVT' managé
    Demander sur le forum .NET?

  8. #8
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Demander sur le forum .NET?
    Oui c'est une bonne idée.
    Mais est-ce que certaines libraries (genre WxWidget) qui possèdent déjà leur propre conteneurs n'empechent pas la création d'objet du standard std:: ??

    Je dis ça car j'ai déjà entendu ce problème avec WxWidget je crois (à vérifier)

    L'histoire du constructeur par recopie, ok. Mais pourquoi?

  9. #9
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    je ne sais pas trop ce qu'est WxWidget
    c'est mon premier projet sous vc++.net

  10. #10
    Membre expérimenté Avatar de lun4t1k
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    276
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 276
    Par défaut
    J'utilise des std::vector avec WxWidget et je n'ai pas de problème.
    Peu importe l'initialisation.
    Oo

  11. #11
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par lun4t1k
    J'utilise des std::vector avec WxWidget et je n'ai pas de problème.
    Peu importe l'initialisation.
    Oo
    C'est ce que voudrai la logique bien sûr!

  12. #12
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Seb33300
    je ne sais pas trop ce qu'est WxWidget
    c'est mon premier projet sous vc++.net
    Si tu programmes en .NET, alors va dans le forum .NET, sinon il faut désactiver le code managé.

  13. #13
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Quand on programme en C++/CLI, il y a deux types de classes, les classes managées, et les classes non managées (les classes C++). Une classe managée ne peut pas avoir en donnée membre une classe non managée. La seule passerelle est en passant par des pointeurs. D'où le message d'erreur en question.

    Dans l'autre sens, c'est aussi possible, mais encore plus complexe (par exemple avec gc_root).

    Il ne faut pas voir C+++CLI comme un langage normal, mais comme un langage schizophrène, avec deux systèmes de type ayant juste des passerelles entre eux, deux systèmes de gestion de mémoire, deux notions de fonctions virtuelles, deux modes de généricité,...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

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

Discussions similaires

  1. petit probleme avec Vector
    Par Msakeni dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 11/12/2008, 19h28
  2. [C#] Petit problème avec un élément du FAQ
    Par matech dans le forum ASP.NET
    Réponses: 11
    Dernier message: 24/01/2008, 14h11
  3. petit probleme avec Devil
    Par ellipse dans le forum DevIL
    Réponses: 2
    Dernier message: 01/02/2005, 18h41
  4. [TP]petit probleme avec solution
    Par pompompolom dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 02/12/2004, 19h48
  5. petit probleme avec l'éditeur de builder
    Par qZheneton dans le forum C++Builder
    Réponses: 2
    Dernier message: 28/10/2004, 16h19

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