Pb ancienne version g++ vector::at( ) non reconnu

cs_ashram Messages postés 3 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 26 août 2004 - 26 août 2004 à 10:25
MetalDwarf Messages postés 241 Date d'inscription mardi 29 octobre 2002 Statut Membre Dernière intervention 23 janvier 2006 - 28 août 2004 à 12:11
bonjour

j'ai un prog qui utilise la STL
je le compile ss windows ou ss cygwin et ça marche

mais ss unix avec un compilo g++ un peu ancien il ne reconnait
par la méthode at( ) de la classe vector

voici l'erreur
Trie.cpp: In method `bool Trie::includedIn (set<Trie, less<Trie>,
allocator<Trie> > *, vector<short unsigned int, allocator<short
unsigned int> > *, short unsigned int)':
Trie.cpp:187: no matching function for call to `vector<short unsigned int, allocator<short unsigned int> >::at (short unsigned int &)'

on m a dit que cela venait probablement du fait que j utilise une ancienne version de g++ la 2.96

est ce que qq un aurait une solution ?

merci d'avance pour votre aide

5 réponses

jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
26 août 2004 à 10:53
Salut,

Ben il y a deux solutions : Mettre à jour gcc ou bien utiliser l'operateur [] (par contre celui-ci ne fait pas de verif de limite).

A+,
JP.
0
cs_ashram Messages postés 3 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 26 août 2004
26 août 2004 à 11:02
le pb c'est que je veux faire une comparaidon du type

vector< short unsigned > * itemset ;
shot unsigned tmpId =0 ;
....
if( tmpId == itemset[ spos ] )

et que [] ne marche pas pour ça
il me lance une erreur

In member function `bool Trie::includedIn(std::set<Trie, std::less<Trie>, std::allocator<Trie> >*, std::vector<short unsigned int, match for 'operator==' in 'tmpId == *(itemset + (+(spos * 12)))'
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
26 août 2004 à 11:07
il faudrais faire

if( tmpId == (*itemset)[ spos ] )

pourquoi un pointeur sur un vector?
0
jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
26 août 2004 à 11:17
c'est normal itemset est un pointeur...

essaye :


if( tmpId == (*itemset)[ spos ] )

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MetalDwarf Messages postés 241 Date d'inscription mardi 29 octobre 2002 Statut Membre Dernière intervention 23 janvier 2006
28 août 2004 à 12:11
je viens rapidement de lire ton post et j ai bien vite vu le probleme : g++ 2.96!!!
g++ 2.96 n a en realite jamais existe, et ce sont les developpeur de g++ qui le disent. C est en fait une version de developpement que red hat a cru malin d utiliser comme compilateur et qui du coup se retrouve un peu partout!! Mais c est une versioin de developpement donc les bugs, ca peut arriver.
Essaye de prendre une version plus recente de gcc/g++, comme la 3.4.0 qui marche sans probleme et qui compile 15% plus vite que la 3.3 pour le C++.
Tu devrais la trouver en package pour ta distribution, ou sur http://gcc.gnu.org/.
Ce n est pas dur a compiler, si tu sais faire ./configure && make && make install...
0
Rejoignez-nous