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 :

STL et G++ : bind2nd et generate non reconnus ?


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Par défaut STL et G++ : bind2nd et generate non reconnus ?
    Bonjour,

    J'avais un programme qui compilait parfaitement sous Visual C++ 2005.
    Maintenant j'essai de le compiler avec Eclipse CDT sous Ubuntu. Pas mal de truc fonctionne mais il me reste ces problèmes avec l'utilisation des fonctions "bind2nd" et "generate" de la STL. Voici par exemple un cas d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	std::generate(	m_po_configuration->Get_Rack().begin() + loc_uc_previous_size, 
    					m_po_configuration->Get_Rack().end(), 
    					TRandomAlphabet( m_po_configuration ) );
    Et voici ce que me répond GCC :
    erreur: no matching function for call to «generate(__gnu_cxx::__normal_iterator<TLetter**, std::vector<TLetter*, std::allocator<TLetter*> > >, __gnu_cxx::__normal_iterator<TLetter**, std::vector<TLetter*, std::allocator<TLetter*> > >, TGrid::Update_Rack_Randomly()::TRandomAlphabet)»
    Je ne comprends donc rien : y a til quelque chose a faire pour faire coucher GCC et la STL ? Merci.

    Alex.

  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
    Par défaut
    T'as bien inclus <algorithm> ?

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Par défaut
    Oui oui bien sur j'ai inclu <algorithm> d'ailleurs ca compile très bien sous Visual.

    D'ailleurs dans cette même classe j'ai inclu <algorithm> pour trois fonctions : for_each, find_if et generate.

    Et seul generate ne compile pas !!!!


    En tout cas merci pour l'aide.

    Alex.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 190
    Par défaut
    Salut,

    Pour qu'on puisse réellement t'aider il faudrait que tu fournisses un code compilable qui reproduise ton problème.

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Par défaut
    Très bien, alors voici une classe simplifiée de mon erreur avec generate :

    .h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #ifndef ESSAI_H_
    #define ESSAI_H_
     
    class Essai
    {
    	public :
     
    	void Main() ;	
    };
     
     
    #endif /*ESSAI_H_*/
    et .cpp

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    #include "stdafx.h"
    #include "Essai.h"
    #include <algorithm>
    #include <vector>
    #include <ctime>
     
    void
    Essai::Main()
    {
    	std::vector<int> vect(10);
     
    	// Random functor
    	class TestRand
    	{	
    	public :
    		TestRand(  ){}			
     
    		int operator()()
    		{
    			static bool loc_b_init = false;			
     
    			if ( !loc_b_init )
    			{
    				srand((unsigned int)time(NULL));
    				loc_b_init = true ;			
     
    				int loc_uc_num =	static_cast<int>( rand() % ( 100 - 1 ) ) ;
     
    				return loc_uc_num ;	
    			}		
    			else
    			{
    				return 0 ;
    			}		
    		}
    	};
     
    	std::generate( vect.begin(), vect.end(), TestRand() );
     
    }
    Résultat :
    ../Krablenet/Sources/Essai.cpp: In member function «void Essai::Main()»:
    ../Krablenet/Sources/Essai.cpp:38: erreur: no matching function for call to «generate(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, Essai::Main()::TestRand)»
    Alors que ca compile très bien sur Visual. Que se passe-t-il ? Le compilo de Visual m'a-t-il laissé passé une aberration ?

    Merci.
    Alex.

  6. #6
    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
    Par défaut
    Il faut que ta classe TestRand soit à la portée du fichier.
    En effet, les types utilisés pour instancier des templates doivent avoir un linkage global. (ou un truc comme ça, je suis plus trop sûr des termes)

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

Discussions similaires

  1. VB.NET Pilotage Excel : parametres xl... non reconnus
    Par bib34690 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 08/03/2006, 09h49
  2. [Compilation]Fichiers d'inclusion non reconnus
    Par Pépé Lélé dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 04/03/2006, 13h00
  3. Réponses: 21
    Dernier message: 01/03/2006, 16h51
  4. [PHP & Oracle] caractères non reconnus
    Par Ryle dans le forum Oracle
    Réponses: 3
    Dernier message: 08/02/2006, 08h09
  5. Fichiers .asp non reconnus
    Par zorba49 dans le forum ASP
    Réponses: 5
    Dernier message: 13/09/2005, 09h49

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