Accueil > Forum > > > > Problème Template
Problème Template
samedi 27 décembre 2008 à 21:43:33 |
Problème Template

lglandeur
|
Bonjour, pour la réalisation d'un programme j'ai besoin d'accéder à un fichier ini, et comme je ne veux pas être limité à Windows, j'ai eu l'idée de me créer une class pour lire le fichier ini. Pour accéder a une valeur du fichier ini j'utilise une fonction template de ma class, et c'est la que les choses se gâte. Lors de la compilation tu petit programme de teste j'ai droit a un beau message d'erreur : « undefined reference to `std::string INIParser::GetValue<std::string>(std::string const&, std::string const&)' » Voila les sources de mon programme : Fichier : INIParser.h
#ifndef INIPARSER_H #define INIPARSER_H
#include <fstream> // pour accéder au fichier #include <sstream> // pour utiliser istringstream #include <string> #include <map>
class INIParser { private: std::map<std::string, std::string> ini; public: INIParser(const std::string &); ~INIParser(); template <class T> T GetValue(const std::string &, const std::string &); };
#endif // INIPARSER_H
Fichier : INIParser.cpp
#include "INIParser.h"
INIParser::INIParser(const std::string &filename) { std::string section, line, clef, valeur; std::size_t pos; std::ifstream file(filename.c_str()); while (!file.eof()) { std::getline (file, line); // suppretion des commentaires pos = line.find_first_of(';'); if(pos != std::string::npos) line.erase (line.begin() + pos, line.end()); // continue si la ligne n'ai pas vide if(!line.empty()) { // test si la ligne corespond a une section pos = line.find_first_of('['); if(pos != std::string::npos) { line.erase(line.begin(), line.begin() + pos); line.erase(line.begin() + line.find_first_of (']'), line.end()); section = line; } else // sinon elle coorespond a une clef { pos = line.find_first_of('='); clef = line.substr (0, pos-1); valeur = line.substr (pos+1); // permet la suppretion de tout les espaces dans la clef while(std::string::npos != (pos = clef.find_first_of(' '))) clef.erase(pos); clef.insert(0, section + '/'); ini.insert(std::make_pair(clef, valeur)); } } } file.close(); }
INIParser::~INIParser() { ini.clear(); }
template <class T> T INIParser::GetValue(const std::string &Section, const std::string &clef) { std::map<std::string, std::string>::iterator it=ini.find(Section+"/"+clef); if(it != ini.end()) { std::istringstream iss(it->second); T val; iss >> val; return val; } }
Fichier : main.cpp
#include <iostream> #include "INIParser.h"
using namespace std;
int main() { INIParser ini("config.ini"); cout << ini.GetValue<string>("config","text") << endl; return 0; }
Si quelqu'un à une idée sur le problème merci de répondre. Cordialement.
|
|
dimanche 28 décembre 2008 à 12:13:53 |
Re : Problème Template

lglandeur
|
Bonjour,
Alors voila je pense avoir trouvé la solution a mon problème. Pour ce faire il faut que je décrive ma fonction dans mon fichier d'entête, car apparemment une fonction template ne peut être décrite dans un fichier source a part.
Merci de bien vouloir m'expliquer si c'est bien cela la source de mon problème.
|
|
dimanche 28 décembre 2008 à 12:23:06 |
Re : Problème Template
|
dimanche 28 décembre 2008 à 12:24:17 |
Re : Problème Template
|
Cette discussion est classée dans : string, std, line, pos, iniparser
Répondre à ce message
Sujets en rapport avec ce message
utlisation de la classe string [ par borgeomi ]
borgeomibonjouuuuuuur !!!!!nouveau programmeur en C ++ ( mais vieux en cobol )sous visual C++création d'une fonction qui enlève les espaces de début e
Problème avec les std::string [VC++6.0] [ par D1m3x ]
Je suis en train de programmer un petit programme où j'utilise les templates, c'est la première fois que j'en utilise, alors je ne connais pas encore
Probleme de hash_map avec les string [ par playmo420 ]
SalutJ'ai besoin d'utiliser une table de hachage dans un programme mais lorsque je prend une cle de type string, il y a une erreur... (ca fonctionne a
Peut-on donner une longueur fixe à std::string [ par marik7335 ]
Salut à tous,Je voudrais savoir si c'est possible d'imposer une longueur fixe à la variable suivante : std::string var ?
tableau [ par ToToL ]
Bonjour,j'ai un tableau créé de cette maniere :std::vector Pos;et a un moment j'ai besion d'en créé un autre qui doit etre une copie de Pos , quel es
Remplir un string, probleme [ par ChamY ]
Bonjour, Je suis en 1ere année de BTS info. J'ai un projet a realiser pendant ces vancances : une bibliotheque. J ai un ptit probleme lors de l uti
convertir une string en float [ par jean_vandevere ]
Bonjour à tous, je cherche à convertir une valeur de format string en un float en dev C++.Le code que je tape est le suivant et consite à aller lire
std::string to LowerCase [ par TeLeTUbIz ]
Salut ! Ayant la fleme de programmer cet algo, je voudrais savoir si qqu'un connait une méthode rapide de changement de casse d'un std::string.Voilà
Probleme EDL (VC++7) [ par vecchio56 ]
Bonjour J'ai deux problèmes d'edition de liens: Dialog.obj : error LNK2001: symbole externe non résolu "public: void __thiscall std::_String_base::_X
compilation .o [ par xantro ]
bonjour a tous et a toutes. J'aurai besoin d 'un coup de main pour un probleme de compilation. Voila, j'ai mon programme avec plusieurs fichiers (fic
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|