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 :

Vector dans une classe qui vient de Java


Sujet :

C++

  1. #1
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Vector dans une classe qui vient de Java
    Bonjour

    J'ai besoin actuellement de convertir un parser HTML DOM de Java en C++

    Je tombe sur le type Vector de Java et je le converti en C++ à partir du template de vector.
    Mon problème est plus simple que celui de http://www.developpez.net/forums/u51766/mephistopheles/

    je donne le code de la déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        vector<std::wstring> recentOpenedProject;
    je donne l'include
    et je donne l'appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    recentOpenedProject = obUtil.readConfig();
    c'est un pb de base, mais mon compilateur ne reconnait pas le type vector.
    Je pense que je ne le code pas bien.
    Si quelqu'un peut m'aider ce sera

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    vector est défini dans le namespace std, donc soit vous ajouter using namespace std; après l'include, soit vous remplacer vector par std::vector

  3. #3
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Si tout était aussi simple....
    Bonjour,

    Merci de ce simple conseil, il suffisait d'y penser
    J'ai retenu la solution std::vector car la solution
    using namesapce std: m'a été déconseillé autrefois sur le forum.
    c'est

  4. #4
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Citation Envoyé par JeanNoel53 Voir le message
    using namesapce std: m'a été déconseillé autrefois sur le forum.
    à vous de voir, mais si tout les langages ayant des espaces de noms ont un équivalent de using ce n'est sans doute pas pour qu'il ne soit pas utilisé

  5. #5
    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
    Points : 3 159
    Points
    3 159
    Par défaut
    C'est en effet déconseillé car tu peux faire cohabiter plusieurs librairies qui utilisent le nom "vector" qui est assez courant. L'espace de nom permet de les séparer.

    Cela dit, si tu es certain de ne pas utiliser d'autres espaces de nom, tu n'es pas obligé de t'en priver. Note aussi que "using namespace" peut s'utiliser sur des bouts de code plus localisés que la classe entière.

    Personnellement, je te conseillerai de t'en passer dans ton cas car "std::" n'est pas très lourd à écrire.

  6. #6
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 630
    Points : 30 699
    Points
    30 699
    Par défaut
    Salut,
    Citation Envoyé par bruno_pages Voir le message
    à vous de voir, mais si tout les langages ayant des espaces de noms ont un équivalent de using ce n'est sans doute pas pour qu'il ne soit pas utilisé
    En fait, le problème de la directive using est un peu plus complexe que cela, du fait de la séparation des unités de compilation en deux types de fichiers (fichier d'en-tête d'un coté, fichier d'implémentation de l'autre) qu'utilise C++...

    Si la directive using est mal placée, de manière "globale"(comprend: en dehors de toute classe ou fonction) dans un fichier d'en-tête par exemple, elle aura la fâcheuse manie de se répandre dans tout fichier incluant de manière directe ou indirecte le fichier dans lequel elle apparait.

    Tu perds donc tout le bénéfice de l'utilisation des espaces de noms, et, pire encore, tu risque de provoquer des conflits qui t'obligeront, quoi qu'il arrive, à... utiliser le nom pleinement qualifié, incluant les espaces de noms.

    Par contre, utilisée intelligemment, elle peut, effectivement, faciliter le codage en t'évitant de devoir passer par tous les espaces de noms pour accéder à un type donné

    Et puis, l'un dans l'autre, on peut aussi remarquer que tous les langages fournissent une instruction goto (ou similaire), et pourtant, on ne peut pas vraiment dire que son utilisation soit bien vue

  7. #7
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    pour être tout à fait honnête concernant ma précédente remarque :
    • étant fainéant j'utilise toujours using, et je n'ai jamais eu de conflit
    • mais surtout c'est un peu une manière de mettre les espaces de nom à la trappe et faire comme s'ils n'existaient pas, réalisant des générateurs et reverses je dois dire que la gestion des espaces de noms c'est vraiment la partie que j'aime le moins

  8. #8
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 630
    Points : 30 699
    Points
    30 699
    Par défaut
    Citation Envoyé par bruno_pages Voir le message
    pour être tout à fait honnête concernant ma précédente remarque :
    • étant fainéant j'utilise toujours using, et je n'ai jamais eu de conflit
    • mais surtout c'est un peu une manière de mettre les espaces de nom à la trappe et faire comme s'ils n'existaient pas, réalisant des générateurs et reverses je dois dire que la gestion des espaces de noms c'est vraiment la partie que j'aime le moins
    C'est bien pour cela que leur utilisation inconsidérée est déconseillée...

    Il est beaucoup plus facile, à la base de dire "attention, tu le fais à tes risques et périls" que de dire "vas-y sans crainte" et de commencer à lister les nombreux cas dans lesquels... cela mènera à la "catastrophe".

    Maintenant, si tu décide, dans une situation donnée et en connaissance de cause, de ne pas suivre le conseil de prudence que l'on t'a donné, cela n'engage que toi, et, au moins, tu sauras comment réagir si, d'aventure, cela t'amène à une situation de catastrophe

    Il y a de nombreuses situations dans lesquelles la pratique ne portera pas à conséquence, nous sommes tous bien d'accord, mais cela ne devrait pas nous inciter à... oublier toutes les autres

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

Discussions similaires

  1. [PHP 5.3] Instance de BDD dans une classe qui cause une exception
    Par lamouche42 dans le forum Langage
    Réponses: 5
    Dernier message: 29/10/2011, 13h13
  2. Pb std::vector dans une classe
    Par didi_di dans le forum Langage
    Réponses: 8
    Dernier message: 17/11/2009, 11h07
  3. problème d'affichage du résultat dans une classe qui utilise SNMP
    Par ramzouni dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 22/05/2009, 02h26
  4. Réponses: 1
    Dernier message: 13/05/2009, 10h41
  5. vector dans une class
    Par squale69 dans le forum C++
    Réponses: 7
    Dernier message: 11/04/2008, 21h05

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