Bonjour,
Cans une classe, je désire avoir un membre qui est une liste de string.
Donc j'aurais voulu utiliser :
Mais ça ne marche pas, j'ai 3000 warnings ! (je suis sous VC6)Code:
1
2 std::list<std::string> m_listOpt;
Merci par avance,
@+
Version imprimable
Bonjour,
Cans une classe, je désire avoir un membre qui est une liste de string.
Donc j'aurais voulu utiliser :
Mais ça ne marche pas, j'ai 3000 warnings ! (je suis sous VC6)Code:
1
2 std::list<std::string> m_listOpt;
Merci par avance,
@+
Ça doit venir de ton compilo parce que personnellement chez moi
fonctionne parfaitement aucune erreur ne m'est retourné à la compilation. J'utilise GCC.Code:std::list<std::string> stringList;
Tu inclus bien le header <list> ?
Tu as un SDK pas trop vieux ? (Officiellement, le dernier pour Visual 6 est celui de Février 2003)
Si on pouvait savoir ce qui ne va pas exactement, ça nous aiderait à mieux comprendre pourquoi ça ne marche pas chez toi. Un petit copier/coller des messages retournés serait peut-être utile.
Bonjour,
sitôt demandé, sitôt posté :
voilà le code :
et un des warnings:Code:
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 #include "myInclude.h" #include <list> using namespace std; class CDir { std::string m_path; unsigned int m_nbDir; unsigned int m_nbFiles; std::list<std::string> m_listOpt; public: //Constructeur inline CDir(std::string path) : m_path(path), m_nbDir(0), m_nbFiles(0) { } //Destructeur inline ~CDir() { } //On ne définit pas les constructeurs de recopie et d'affectation //Fonction de scan du répertoire void Scan(); };
Citation:
d:\program files\microsoft visual studio\vc98\include\list(125) : warning C4786: '?$reverse_bidirectional_iterator@Viterator@?$list@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$
allocator@D@2@@std@@@2@@std@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@3@AAV43@PAV43@H' : identifier was truncated to '255' characters in the browser information
e:\dev\toto\dir.h(32) : see reference to class template instantiation 'std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::ch
ar_traits<char>,class std::allocator<char> > > >' being compiled
Quelle est la ligne 32 ?
As-tu essayer d'utiliser des char à la place des string pour voir ce que ça donnait ?
PS: tu as nul besoin de spécifier std:: vu que tu as défini l'espace de nom std (cf. using namespace std;)
Pour le Warning C4786, ça semble être lié au "source code browser" et ne pas avoir d'influence sur le programme lui-même. C'est juste qu'il s'est trouvé une fonction template dont le nom système est un peu long pour lui...
si j'utilise n'importe quoi d'autre que le string ==> pas de problème
trop fort : ça le fait qu'en debug
en release pas de problème
je sais pas trop quand même comment le régler ...
@+
bon j'ai mis ça :
C'est bien pourri, mais bon ...Code:
1
2#pragma warning (disable : 4786)
faute de mieux !
C'est un problème classique et connu de VC (=> probablement dans sa FAQ). Je ne sais pas ce qu'il en est avec les versions non antédiluviennes du compilo.
Et ce pragma est la seule solution. Si il y a quelque chose de sale, c'est de s'acharner à rester avec un vieux compilo pour de mauvaises raisons (*), et de râler ensuite au sujet de ses défaillances :P
(*) Il y en a malheureusement des parfaitement valides, et je ne connais nullement les tiennes.
oui je comprends bien ...
mais c'est prévu que je passe sous VS 2005 ;)
@+