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 :

Compilation LINUX GCC 4.6.1 : Erreur STL


Sujet :

C++

  1. #21
    Membre à l'essai
    Homme Profil pro
    Developpeur / Technicien support
    Inscrit en
    Février 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur / Technicien support
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Me revoila !!!

    Concernant le projet, ça continue d'avancer, c'est ça qui est bon.

    Néanmoins, il me reste un petit problème, on a la possibilité d'utiliser des fonctions de remplacement vis à vis du fichier backward_warning.h.

    ex : hash_map => STL
    unordered_map => fonction de remplacement à hash_map.

    Mon problème est que historiquement dans le projet, le fichier header rope est utilisé et il n'y a aucune information sur une fonctions de remplacement semblable à ce que j'ai écrit précédemment.

    Ma question est comment trouver un alias ou une fonction de remplacement pour les fonctions du fichier rope ?

    Je n'ai rien trouvé sur le net.

  2. #22
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Vu que tu utilises g++ -> #include <ext/rope>.
    Trouvé en 5 minutes grâce au net :p
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #23
    Membre à l'essai
    Homme Profil pro
    Developpeur / Technicien support
    Inscrit en
    Février 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur / Technicien support
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    On arrête le projet pour le moment et on retourne au petit bout de code je croyais que la compilation était ok mais non.

    J'ai omis d'exclure l'option -c lors de la compilation et comme vous le savez il n'y a pas de linkage lorsque cette option est passé .
    L’exécutable que j'avais obtenu ne pouvait fonctionné alors je recommence l'analyse des erreurs via ce petit bout de code.

    Pour vous rafraîchir la mémoire :

    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
    #include <iostream>
    #include <vector>
    using namespace std;
     
    template <typename T>
    class MyClass
    {
        public:
            static std::vector <T> MyVector;
    };
     
    int main()
    {
       MyClass<int>::MyVector = {17};
       cout<<"Sa marche"<<endl;
     
       return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    g++ -std=c++0x main.cpp -o prog
    /tmp/ccRvQcyM.o: In function `main':
    main.cpp:(.text+0x38): undefined reference to `MyClass<int>::MyVector'
    collect2: ld a retourné 1 code d'état d'exécution
    et alors la je comprend pas pourquoi le compilateur me demande de lui passé la variable par référence.

  4. #24
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Ca, c'est l'erreur que j'avais indiqué

  5. #25
    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 156
    Points
    3 156
    Par défaut
    Citation Envoyé par Kasyon Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    g++ -std=c++0x main.cpp -o prog
    /tmp/ccRvQcyM.o: In function `main':
    main.cpp:(.text+0x38): undefined reference to `MyClass<int>::MyVector'
    collect2: ld a retourné 1 code d'état d'exécution
    et alors la je comprend pas pk le compilateur me demande de lui passé la variable par reference.
    C'est justement un problème de linkage : MyClass<int>::MyVector est bien déclaré dans les headers mais le compilateur ne trouve pas son implémentation. Aucun rapport avec le passage par référence.
    Find me on github

  6. #26
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Non, ce n'est pas défini, c'est seulement déclaré. C'est ce que l'on t'avait dit.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #27
    Membre à l'essai
    Homme Profil pro
    Developpeur / Technicien support
    Inscrit en
    Février 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur / Technicien support
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Effectivement j'avais oublié la déclaration. La compilation s'effectue correctement. Mes compétences en C++ remonte à 1 an et demi sans pratique y a des automatismes qui se perdent .

    Je vais donc reprendre le projet et m'y attelé un peu plus. Merci pour vos conseils je reviens vers vous au plus vite. ++

  8. #28
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    template <typename T>
    struct MyClass
    {
            // v--- déclaration
            static std::vector <T> MyVector;
    };
     
     
    // v--- définition
    template <typename T>
    std::vector <T> MyClass<T>::MyVector;
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  9. #29
    Membre à l'essai
    Homme Profil pro
    Developpeur / Technicien support
    Inscrit en
    Février 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur / Technicien support
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Bonjour à tous,

    La résolution du projet a nettement progressé, cependant il me reste quelque erreurs que je ne comprend pas.
    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
     
    //! retourne le n-ième élément d'une liste (le type des éléments de la liste est indifférent)
    template<typename _datum>
    inline _datum& nth(list<_datum>&lst,int n) {
      list<_datum>::iterator i=lst.begin();
      while(n>0) { ++i; --n; }
      return *i;
    }
     
    //! retourne le n-ième élément d'une liste (le type des éléments de la liste est indifférent)
    template<typename _datum>
    inline _datum& nth(const list<_datum>&lst,int n) {
      list<_datum>::iterator i=static_cast< list<_datum> >(lst).begin();
      while(n>0) { ++i; --n; }
      return (_datum&)*i;
    }
     
    //! retourne le n-ième élément d'une liste (le type des éléments de la liste est indifférent)
    template<typename _datum>
    inline _datum& nth(list<_datum>*lst,int n) {
      list<_datum>::iterator i=lst->begin();
      while(n>0) { ++i; --n; }
      return *i;
    }
     
    //! retourne le n-ième élément d'une liste (le type des éléments de la liste est indifférent)
    template<typename _datum>
    inline _datum& nth(const list<_datum>*lst,int n) {
      list<_datum>::iterator i=lst->begin();
      while(n>0) { ++i; --n; }
      return (_datum&)*i;
    }
    Erreur :

    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
    lisp_macros.h:166:53: erreur: expected constructor, destructor, or type conversion before ';' token
    lisp_macros.h: In function '_datum& nth(std::list<_datum>&, int)':
    lisp_macros.h:170:3: erreur: need 'typename' before 'std::list<_datum>::iterator' because 'std::list<_datum>' is a dependent scope
    lisp_macros.h:170:26: erreur: expected ';' before 'i'
    lisp_macros.h:171:18: erreur: 'i' was not declared in this scope
    lisp_macros.h:172:11: erreur: 'i' was not declared in this scope
    lisp_macros.h: In function '_datum& nth(const std::list<_datum>&, int)':
    lisp_macros.h:178:3: erreur: need 'typename' before 'std::list<_datum>::iterator' because 'std::list<_datum>' is a dependent scope
    lisp_macros.h:178:26: erreur: expected ';' before 'i'
    lisp_macros.h:179:18: erreur: 'i' was not declared in this scope
    lisp_macros.h:180:20: erreur: 'i' was not declared in this scope
    lisp_macros.h: In function '_datum& nth(std::list<_datum>*, int)':
    lisp_macros.h:186:3: erreur: need 'typename' before 'std::list<_datum>::iterator' because 'std::list<_datum>' is a dependent scope
    lisp_macros.h:186:26: erreur: expected ';' before 'i'
    lisp_macros.h:187:18: erreur: 'i' was not declared in this scope
    lisp_macros.h:188:11: erreur: 'i' was not declared in this scope
    lisp_macros.h: In function '_datum& nth(const std::list<_datum>*, int)':
    lisp_macros.h:194:3: erreur: need 'typename' before 'std::list<_datum>::iterator' because 'std::list<_datum>' is a dependent scope
    lisp_macros.h:194:26: erreur: expected ';' before 'i'
    lisp_macros.h:195:18: erreur: 'i' was not declared in this scope
    lisp_macros.h:196:20: erreur: 'i' was not declared in this scope
    lisp_macros.h: In function '_datum& nth(std::list<_datum>*, int) [with _datum = LISP_Atom*]':
    lisp_macros.h:186:3: erreur: dependent-name 'std::list<_datum>::iterator' is parsed as a non-type, but instantiation yields a type
    lisp_macros.h:186:3: note: say 'typename std::list<_datum>::iterator' if a type is meant
    lisp_macros.h: In function '_datum& nth(std::list<_datum>&, int) [with _datum = std::basic_string<char>]':
    lisp_macros.h:170:3: erreur: dependent-name 'std::list<_datum>::iterator' is parsed as a non-type, but instantiation yields a type
    lisp_macros.h:170:3: note: say 'typename std::list<_datum>::iterator' if a type is meant

  10. #30
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lisp_macros.h:170:3: erreur: need 'typename' before 'std::list<_datum>::iterator' because 'std::list<_datum>' is a dependent scope
    C'est quand même une erreur très simple à corriger.
    Gcc te donne la correction et l'explication.

    Après ça il te restera que la 1ère à corriger.

    edit:
    Citation Envoyé par Kasyon Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //! retourne le n-ième élément d'une liste (le type des éléments de la liste est indifférent)
    template<typename _datum>
    inline _datum& nth(const list<_datum>&lst,int n) {
      list<_datum>::iterator i=static_cast< list<_datum> >(lst).begin();
      while(n>0) { ++i; --n; }
      return (_datum&)*i;
    }
    :o j'avais pas vu ça.

    C'est vraiment crade. Tu devrais retourner une ref constante au lieu de const_cast (d'ailleurs ça m'étonnerait qu'un static_cast passe ici).

    Ca donnerai ça
    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
    // 'auto' à la place de 'typename std::list<_datum>::iterator'
    // rendra le code plus lisible si possible
     
    template <class _datum>
    _datum& nth(std::list<_datum>& lst, int n) {
    	typename std::list<_datum>::iterator i=lst.begin();
    	while(n>0) { ++i; --n; }
    	return *i;
    }
     
    template <class _datum>
    const _datum& nth(const std::list<_datum>& lst, int n) {
    	typename std::list<_datum>::const_iterator i=lst.begin();
    	while(n>0) { ++i; --n; }
    	return *i;
    }
     
    template <class _datum>
    _datum& nth(std::list<_datum>* lst, int n) {
    	typename std::list<_datum>::iterator i=lst->begin();
    	while(n>0) { ++i; --n; }
    	return *i;
    }
     
    template <class _datum>
    const _datum& nth(const std::list<_datum>* lst, int n) {
    	typename std::list<_datum>::const_iterator i=lst->begin();
    	while(n>0) { ++i; --n; }
    	return *i;
    }
    Mais si tu as besoin de telles fonctions sur une list, c'est que tu as probablement besoin d'un vector à la place.

  11. #31
    Membre à l'essai
    Homme Profil pro
    Developpeur / Technicien support
    Inscrit en
    Février 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur / Technicien support
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Merci pour ton aide Iradrille, sache que je reprend un projet d'un programmeur ayant une façon de codé pas du tout professionnelle.

    N'ayant pratiqué sur le C++ depuis près de 2 ans maintenant, j'ai quelque peu du mal à comprendre son code.

    Peux tu m'expliqué à quoi correspondent les erreurs ? STP(de manière générale, ne te prend pas la tête )

  12. #32
    Membre à l'essai
    Homme Profil pro
    Developpeur / Technicien support
    Inscrit en
    Février 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur / Technicien support
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    J'ai remplacé les templates que tu m'as donné et j'obtient ces erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    lisp_macros.h:163:34: erreur: patron de l'argument 1 est invalide
    lisp_macros.h:163:34: erreur: patron de l'argument 2 est invalide
    lisp_macros.h:163:46: erreur: expected initializer before 'iterator

    ayant un rapport avec la definition e mon type de variable via TYPEDEF :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef std::list<template _datum>::iterator iterator;
    Tu m'as parlé de auto j'en ai un vague souvenir, cela représente pas un alias ou permet d'être synonyme de mon typedef pour le compilateur si je ne m'abuse. (désolé pour les trous de mémoire )

  13. #33
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Citation Envoyé par Kasyon Voir le message
    Peux tu m'expliqué à quoi correspondent les erreurs ? STP(de manière générale, ne te prend pas la tête )
    La 1ere je ne sais pas, elle était sur du code non montré ici (et le message n'est pas assez explicite pour deviner ^^)

    Toutes les autres sont la même erreur répétée 4 fois, en gros comme tu as des templates imbriqués, le compilo est un peu perdu, et faut l'aider à s'y retrouver en précisant que std::list<_datum>::iterator est un type. Après je peux pas être plus précis la dessus, ça fait parti des erreurs que je corrige quand elles arrivent sans vraiment comprendre.

    Citation Envoyé par Kasyon Voir le message
    J'ai remplacé les templates que tu m'as donné et j'obtient ces erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    lisp_macros.h:163:34: erreur: patron de l'argument 1 est invalide
    lisp_macros.h:163:34: erreur: patron de l'argument 2 est invalide
    lisp_macros.h:163:46: erreur: expected initializer before 'iterator

    ayant un rapport avec la definition e mon type de variable via TYPEDEF :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef std::list<template _datum>::iterator iterator;
    Tu m'as parlé de auto j'en ai un vague souvenir, cela représente pas un alias ou permet d'être synonyme de mon typedef pour le compilateur si je ne m'abuse. (désolé pour les trous de mémoire )
    Si ton typedef est dans ta fonction, 'template' est en trop, c'est le même genre d'erreur, mais pareil je saurais pas te dire pourquoi.

    Si ton typedef est hors de ta fonction, les typedefs template n'existent pas, en C++11 tu peux faire un using
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    template <class T>
    using iterator = std::list<T>::iterator;
     
    // utilisation
    iterator<_datum> it = ...
    Sinon tu peux passer par un wrapper
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    template <class T>
    struct iterator {
       typedef std::list<T>::iterator type;
    };
     
    // utilisation
    iterator<_datum>::type it = ... // mais ici aussi il faudra peut etre typename devant
    Auto laisse le compilo deviner le type, example
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    auto i = 1; // = int i =1;
    std::list<int> li;
    auto it = li.begin(); // = std::list<int>::iterator it = li.begin();
    Du coup c'est pratique pour les itérateurs en particulier car les types sont longs à écrire. (Mais ça été rajouté avec C++11, donc ça compile que sur des compilos récents).

  14. #34
    Membre émérite

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Points : 2 252
    Points
    2 252
    Par défaut
    Pour une explication sur le typename manquant qui provoque l'erreur :
    http://cpp.developpez.com/faq/cpp/?p...LATES_typename

  15. #35
    Membre à l'essai
    Homme Profil pro
    Developpeur / Technicien support
    Inscrit en
    Février 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur / Technicien support
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Effectivement un pti rappel m'a fait plus que du bien. Merci pour le petit cours fourni par Arzar (sympa le pseudo je te le piquerai peut être en pseudo gamer ).

    Il me reste 2 erreurs dont voici l'allure :

    1/ Je déclare un tableau pointeur de char composé de 10 cases.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include <ext/rope>
    char *tnam[10] =
      { "rien", "primitive", "booleen", "nombre", "flottant",
        "ident", "liste", "chr", "chaine", "lambda-expr"
    };
    Erreur :
    Il ne s'agit là que d'un warning, mais j'aimerais avoir votre avis sur l’intégrité des données car l'erreur m'indique qu'il y a un risque de perte de données lors de la conversion.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lisp.cpp:53:1: attention : deprecated conversion from string constant to 'char*' [-Wwrite-strings]
    2/ Mon projet utilise une library STL SGI dépassé, je dois donc le rendre compatible avec la librairie standard de G++ 4.6.1.

    Une partie utilise la variable "crope" défini dans le fichier rope de l'ancienne librarie. J'utilise "ext/rope" créer pour la compatibilité dans la librairie G++ 4.6.1.

    Malheureusement lorsque je déclare ma class dont voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Tokenizer {
    public:         Tokenizer() {}                                                     //!< constructeur
                    string& tokenize( char*& src, char end, char esc );                //!< effectue une tokenisation
                    virtual void parse(string& src) {}                                 //!< tokenise une chaîne entière (à dériver!)
                    virtual void parse(crope& src) {}                                  //!< tokenise une chaîne entière (à dériver!)
                    virtual void out << (ostream &os) {}                                   //!< effectue une sortie sur un flux (à dériver!)
                    //              virtual void to_str() {}
                    virtual Tokenizer& operator=(const Tokenizer&a) { return *this;}   //!< opérateur d'affectation
                    virtual Tokenizer& operator=(Tokenizer&a) { return *this;}         //!< opérateur d'affectation
    };
    Voici les erreurs obtenues :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    data_defs.h:93:22: erreur: 'crope' has not been declared
    data_defs.h:94:16: erreur: variable or field 'out' declared void
    data_defs.h:94:16: erreur: expected ';' at end of member declaration
    data_defs.h:94:20: erreur: expected unqualified-id before '<<' token
    data_defs.h:110:14: erreur: 'crope' has not been declared
    data_defs.h: In member function 'virtual void EDIFACT_string::parse(int&)':
    data_defs.h:110:39: erreur: request for member 'c_str' in 'src', which is of non-class type 'int'
    data_defs.h: At global scope:
    data_defs.h:171:22: erreur: 'crope' has not been declared

  16. #36
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    2- __gnu_cxx::crope ?

    1- Et tes chaines constantes devraient flagguées const. C'est ce que te dit le compilo.
    Avant il laissait faire, maintenant il exige un peu de rigueur dans ce que tu lui dit.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  17. #37
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par Kasyon Voir le message
    La compilation a nettement changé : quelque lignes d'erreurs au lieu de centaines que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    In file included from /usr/include/c++/4.6/backward/hash_map:61:0,
                     from lisp.h:9,
                     from lisp.cpp:1:
    /usr/include/c++/4.6/backward/backward_warning.h:33:2: attention : #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated. [-Wcpp]
    => Je pense que ceci à un rapport avec la spécificité standard (-std=c++0x ou une autre version)

    In file included from lisp.cpp:2:0:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    data_defs.h:11:16: erreur fatale: rope : Aucun fichier ou dossier de ce type
    compilation terminée.
    => le fichier ROPE n'existe plus ??? je ne le vois pas dans mon repertoire de librairie et il devait être un élément de la STL SGI à mon avis.

    Je tiens aussi à vous remercier pour votre aide = , cela m'amène a essayé d'apporté aussi mon aide auprès des autres utilisateurs.
    make: *** [lisp.o] Erreur 1
    hash_map<> n'a jamais été un conteneur standard, ça ne me choque pas trop qu'il soit en cours de disparition chez GNU. Tu devrait pouvoir utiliser std::map<> à la place (insertion en O(log(N)) ou std::unordered_map<> (insertion en temps constant amorti ; c'est une table de hachage) http://www.sgi.com/tech/stl/hash_map.html

    rope<> est une chaîne de caractère optimisée pour les longues chaînes. Tu peux les remplacer par std::string (ou std::wstring si besoin). Il s'agit d'une extension SGI, qui n'a jamais fait partie du standard (le standard se moque des cas d'utilisation spécifique des chaînes de caractère ; au besoin, un allocator spécifique et des traits peuvent probablement permettre d'obtenir un résultat similaire). http://www.sgi.com/tech/stl/Rope.html
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  18. #38
    Membre à l'essai
    Homme Profil pro
    Developpeur / Technicien support
    Inscrit en
    Février 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur / Technicien support
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    J'ai déclaré mon tableau en constante de char => Problème résolu.

    Merci Emmanuel pour ton aide, ta réponse m'aurait aidé si mon message était d'aujourd'hui ^^, j'ai déjà résolu le hash_map.

    Si cela t'intéresse, voici les éléments qui m'ont aidé à résoudre ce problème.

    La librairie de GCC dispose de fonction de remplacement par rapport à la STL désuète depuis le standard C++11

    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
      This file includes at least one deprecated or antiquated header which \
    may be removed without further notice at a future date. Please use a \
    non-deprecated interface with equivalent functionality instead. For a \
    listing of replacement headers and interfaces, consult the file \
    backward_warning.h. To disable this warning use -Wno-deprecated.
     
    /*
    A list of valid replacements is as follows:
     
    Use:                                  Instead of:
    <sstream>, basic_stringbuf            <strstream>, strstreambuf
    <sstream>, basic_istringstream        <strstream>, istrstream
    <sstream>, basic_ostringstream        <strstream>, ostrstream
    <sstream>, basic_stringstream         <strstream>, strstream
    <unordered_set>, unordered_set        <ext/hash_set>, hash_set
    <unordered_set>, unordered_multiset   <ext/hash_set>, hash_multiset
    <unordered_map>, unordered_map        <ext/hash_map>, hash_map
    <unordered_map>, unordered_multimap   <ext/hash_map>, hash_multimap
    <functional>, bind                    <functional>, binder1st
    <functional>, bind                    <functional>, binder2nd
    <functional>, bind                    <functional>, bind1st
    <functional>, bind                    <functional>, bind2nd
    <memory>, unique_ptr                  <memory>, auto_ptr
    Effectivement je spécifie le standard std=c++0x.

    J'ai besoin de votre aide en ce qui concerne les lignes spécifiées dans le rapport d'erreur de mon précédent post. Merci à tous

  19. #39
    Membre à l'essai
    Homme Profil pro
    Developpeur / Technicien support
    Inscrit en
    Février 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur / Technicien support
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Toujours bloqué sur ces variable : "crope" et "out".

    Besoin d'aide

  20. #40
    Membre à l'essai
    Homme Profil pro
    Developpeur / Technicien support
    Inscrit en
    Février 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur / Technicien support
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 30
    Points : 11
    Points
    11
    Par défaut
    Re tout le monde,

    J'ai enfin résolu ces erreurs

    Cependant c'est avec joie que j'ai découvert que la compilation via un fichier makefile se fait fichier par fichier, donc la tirade d'erreurs ne concernait qu'un seul fichier du programme et voilà que j'attaque le nouveau fichier lors de la compilation et hop me revoilà avec une bonne 50aines d'erreurs à nouveau.

    Merci à tous pour votre aide je vais continué mes recherches et ferait l'ouverture d'un nouveau sujet si besoin est.

    Vous pouvez donc cloturer ce sujet et un grand MERCI à tous ceux qui m'ont aidé lors de mes recherches.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Erreur de compilation avec GCC
    Par Neuromancien2 dans le forum C
    Réponses: 7
    Dernier message: 20/08/2007, 09h54
  2. compilation avec arm-linux-gcc (débutant)
    Par kh@_de_7 dans le forum Linux
    Réponses: 2
    Dernier message: 26/03/2007, 10h58
  3. [débutant]compiler avec gcc sous linux
    Par Ickou dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 10/03/2006, 17h27
  4. compilation avec gcc: erreur inhabituelle
    Par artatum dans le forum C
    Réponses: 4
    Dernier message: 12/10/2005, 17h13
  5. compilation avec gcc : erreurs bizard !!!
    Par CodeurNé dans le forum C
    Réponses: 2
    Dernier message: 23/09/2005, 18h09

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