Précédent   Forum des professionnels en informatique > C et C++ > C++
C++ Forum d'entraide technique sur le langage C++. Avant de poster -> F.A.Q C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2012, 16h09   #1
Membre chevronné
 
Inscription : décembre 2004
Messages : 1 213
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 213
Points : 766
Points : 766
Par défaut problème de namespace sous linux

Bonjour,

j'ai un namespace MaLib :

Voici le fichier MaLibFromString.h

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
namespace MaLib
{
	// Conversion d'une std::string en n'importe quel type
	template<class T>
	bool fromString(const std::string & str, T & dest);
 
	// conversion d'une std::string en n'importe quel type. Il faut que le separateur soit
	// un espace (espace blanc ou tabulation)
	template<typename T>
	void fromString(const std::string & str, std::vector<T> & v);	
}
comme toutes les fonctions sont template, tout le code est dans le .h

Voici le fichier MaLibSplit.h
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
namespace MaLib
{
	MaLib_API void split(const std::string & str,char delim,std::vector<std::string> & v);
	MaLib_API void split(const std::string & str,const std::string & delim,std::vector<std::string> & v);
 
	// conversion d'une std::string en n'importe quel type. Il faut que le separateur soit
	// un espace (espace blanc ou tabulation)
	template<typename T>
	void split(const std::string & str, std::vector<T> & v);
}
 
template<typename T>
void MaLib::split(const std::string & str, std::vector<T> & v)
{
	v.clear();
	MaLib::fromString(str, v);
}
Notez bien que la dernière fonction de MaLib::split appelle MaLib::fromString et que MaLib::fromString appelle MaLib::split

Sous Windows visual Studio 2005 aucun problème. Tout compile et s'exécute. Sous linux, j'ai le problème : MaLib::split n'appartient pas au namespace MaLib. J'utilise gcc 4.1

Avez-vous une idée d'où pourrait provenir l'erreur de compilation ?

Merci beaucoup
salseropom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 16h58   #2
Membre éclairé
 
Inscription : décembre 2008
Messages : 236
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 236
Points : 315
Points : 315
Pourquoi les déclarations de split se situent-elles dans un namespace BIBArchimede alors que sa définition la situe dans un namespace MaLib ?
cob59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 17h05   #3
Membre chevronné
 
Inscription : décembre 2004
Messages : 1 213
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 213
Points : 766
Points : 766
désolé

erreur de copier - coller
salseropom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 19h09   #4
Membre expérimenté
 
Homme Léo Gaspard
Lycéen
Inscription : janvier 2012
Messages : 342
Détails du profil
Informations personnelles :
Nom : Homme Léo Gaspard
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : janvier 2012
Messages : 342
Points : 575
Points : 575
GCC indique toujours la ligne de l'erreur. Serait-il possible de l'avoir ?
Ekleog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 17h08   #5
Membre émérite
 
Inscription : novembre 2004
Messages : 1 561
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 561
Points : 853
Points : 853
Et si tu fais :

Code :
1
2
3
4
5
6
7
8
9
namespace MaLib
{
    template<typename T>
    void MaLib::split(const std::string & str, std::vector<T> & v)
    {
        v.clear();
        MaLib::fromString(str, v);
    }
}
?
__________________
VDS "The C++ Standard Library" (Josuttis) -> 30 €
oodini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 09h09   #6
Rédacteur/Modérateur
 
Avatar de JolyLoic
 
Homme Loïc Joly
Développeur informatique
Inscription : août 2004
Messages : 4 346
Détails du profil
Informations personnelles :
Nom : Homme Loïc Joly
Âge : 37
Localisation : France

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

Informations forums :
Inscription : août 2004
Messages : 4 346
Points : 8 081
Points : 8 081
Tu n'as pas mis comment ces .h s'incluent l'un l'autre, mais j'ai l'impression que tu es dans la même situation que http://cpp.developpez.com/faq/cpp/?p...erence_croisee (avec le même genre de solution)
JolyLoic est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h50.


 
 
 
 
Partenaires

Hébergement Web