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 de compilation avec gcc c++ 4.3.0 (2)


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 35
    Points : 24
    Points
    24
    Par défaut Problème de compilation avec gcc c++ 4.3.0 (2)
    Bonjour,

    Voici un morceau de code qui compilait bien avec gcc c++ 4.0.1 et qui ne
    compile pas avec la version 4.3.0. Il y a plusieurs fichiers.
    Le message d'erreur que je reçois quand je compile avec c++ 4.3.0 est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    obj.cpp:3: erreur: specialization of 'impl<T>::impl() [with T = objimpl]' after instantiation
    obj.cpp:4: erreur: specialization of 'impl<T>::~impl() [with T = objimpl]' after instantiation
    Si quelqu'un pouvait m'expliquer pourquoi parce que je ne comprends pas ...
    Merci
    Michel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // impl.h
    template <class T> struct impl
    {
    	T* pimpl;
    	impl();
    	~impl();
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // objimpl.h
    #include <iostream>
    class objimpl 
    { 
    	public: 
    	objimpl(){};
    	void print(int n){std::cout<<"n: "<<n<<"\n";}
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // obj.h
    #include "impl.h"
    class objimpl;
    class obj : private impl<objimpl> 
    { public: 
    	int _n;
    	obj(int n):_n(n){};
    	void print();
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // obj.cpp
    #include "objimpl.h"
    #include "obj.h"
    template <> impl<objimpl>::impl() : pimpl(new objimpl()) {};
    template <> impl<objimpl>::~impl() {delete pimpl;}
    void obj::print(){pimpl->print(_n);}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // main.cpp
    #include "obj.h"
    int main()
    {
    	obj obj_test(1);
    	obj_test.print();	
    }

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Le message est on ne peut plus clair (et logique).
    Spécialiser un cas après l'avoir instancié est évidemment problématique.

Discussions similaires

  1. problème compilation avec gcc real(kind=16)
    Par djocin dans le forum Fortran
    Réponses: 2
    Dernier message: 01/07/2010, 11h39
  2. Problème de compilation avec gcc c++ 4.3.0
    Par micheldup dans le forum C++
    Réponses: 10
    Dernier message: 11/06/2008, 13h18
  3. Problème de compilation avec gcc et bibliothèques
    Par Fonzy007 dans le forum Linux
    Réponses: 1
    Dernier message: 13/02/2007, 13h14
  4. Problème pour compiler avec gcc
    Par Mick.Zen dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 28/06/2006, 15h05
  5. Réponses: 5
    Dernier message: 09/04/2006, 20h02

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