Aider moi a trouver l'erreur

Résolu
NiJuste Messages postés 8 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 1 mars 2010 - 14 juin 2008 à 12:42
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 16 juin 2008 à 22:03
Avec ce petit code j'ai beaucoup d'erreurs de compilation et ca m'empeche de continuer. Aider moi sur vous plait

#include
#include <list>
#include <string>
#include "stdafx.h"
namespace std{}
using namespace std;

template<class T>

class Ring {
list<T> lst;
 
};

regardez les erreurs que ca produit:

--------------------Configuration: test - Win32 Debug--------------------
Compiling...
dfd.cpp
E:\aec\test\dfd.cpp(12) : error C2143: syntax error : missing ';' before '<'
        E:\aec\test\dfd.cpp(74) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(12) : error C2501: 'list' : missing storage-class or type specifiers
        E:\aec\test\dfd.cpp(74) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(12) : error C2059: syntax error : '<'
        E:\aec\test\dfd.cpp(74) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(12) : error C2238: unexpected token(s) preceding ';'
        E:\aec\test\dfd.cpp(74) : see reference to class template instantiation 'Ring<T>' being compiled
Error executing cl.exe.

test.exe - 4 error(s), 0 warning(s)

11 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
14 juin 2008 à 16:39
Je sais pas pk tu mets  ca, mais enleves le: namespace std{}
3
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
14 juin 2008 à 22:36
Salut,

Compile sous gcc/windows (En virant l'inclue stdafx).

Ca sent l'erreur en fin du fichier x qui provoque la détection en début du fichier y.

Essaie de regarder les autres fichiers...
3
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
14 juin 2008 à 23:17
En fait avec ton namespace std{}, c'est comme si tu contribuais au namespace standard du C++.
Comme si tu faisais du code destiné à être utilisé par tous les développeurs C++ et livré avec tous les compilo.
Donc vire le.

gcc est nettement plus tatillon que le compilo fournit avec VS. Un code VS ne compile pas souvent sous gcc, mais l'inverse est quasi systématique.

Donc je me permet d'insister : Le problème n'est probablement pas dans CE fichier.
(Ou alors une sombre histoire d'encodage du fichier... Nan mais nan)
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
15 juin 2008 à 01:29
Pas de pb pour compiler ton code sous visual 2008 a part 2 "typename" qu'il m'a demandé de rajouter.
3

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

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
15 juin 2008 à 13:19
Créé un nouveau projet C++ par exemple Win32, console, vide.

Dedans tu met deux fichier :
main.cpp
fichierquicompilepas.h

Dans main.cpp, tu met :





<hr />



#include "fichierquicompilepas.h"


int main()
{
}<hr />


Dans le .h, tu met ton code qui ne compile pas.
Et là, je serais surpris qu'il te pose les mêmes erreurs.
3
NiJuste Messages postés 8 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 1 mars 2010
14 juin 2008 à 22:46
le probleme c que en enlevant le namespace std{}
j'ai cet erreur:
E:\aec\test\dfd.cpp(6) : error C2871: 'std' : does not exist or is not a namespace

et le travail que j'ai je dois le faire uniquement  en Visual C++
0
NiJuste Messages postés 8 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 1 mars 2010
14 juin 2008 à 22:55
En fait  le probleme ce que , je veux creer mon propre container  a base de STL,
avec l'algorithme que j'ai utilise on me donne des erreurs de
compilation ( en Visual C++ 6.0). Aidez-moi a resourdre ce probleme.
 Ca c'est l'agorithme utilise,
#include
#include <list>
#include <string>
usingnamespace std;

template<class T>
class Ring {
list<T> lst;
public:
// Declaration necessary so the following
// 'friend' statement sees this 'iterator'
// instead of std::iterator:
class iterator;
friendclass iterator;
class iterator : public std::iterator<
std::bidirectional_iterator_tag,T,ptrdiff_t>{
list<T>::iterator it;
list<T>* r;
public:
// "typename" necessary to resolve nesting:
iterator(list<T>& lst,
consttypename list<T>::iterator& i)
: r(&lst), it(i) {}
booloperator==(const iterator& x) const {
return it == x.it;
}
booloperator!=(const iterator& x) const {
return !(*this == x);
}
list<T>::reference operator*() const {
return *it;
}
iterator& operator++() {
++it;
if(it == r->end())
it = r->begin();
return *this;
}
iterator operator++(int) {
iterator tmp = *this;
++*this;
return tmp;
}
iterator& operator--() {
if(it == r->begin())
it = r->end();
--it;
return *this;
}
iterator operator--(int) {
iterator tmp = *this;
--*this;
return tmp;
}
iterator insert(const T& x){
return iterator(*r, r->insert(it, x));
}
iterator erase() {
return iterator(*r, r->erase(it));
}
};
void push_back(const T& x) {
lst.push_back(x);
}
iterator begin() {
return iterator(lst, lst.begin());
}
int size() { return lst.size(); }
};

et voila les erreurs q'on me etourne:

--------------------Configuration: test - Win32 Debug--------------------
Compiling...
dfd.cpp
E:\aec\test\dfd.cpp(10) : error C2143: syntax error : missing ';' before '<'
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(10) : error C2501: 'list' : missing storage-class or type specifiers
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(10) : error C2059: syntax error : '<'
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(10) : error C2238: unexpected token(s) preceding ';'
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(17) : error C2039: 'iterator' : is not a member of 'std'
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(17) : error C2504: 'iterator' : base class undefined
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(17) : error C2143: syntax error : missing ',' before '<'
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(17) : error C2059: syntax error : '<'
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(18) : error C2039: 'bidirectional_iterator_tag' : is not a member of 'std'
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(19) : error C2143: syntax error : missing ';' before '<'
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(19) : error C2501: 'list' : missing storage-class or type specifiers
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(19) : error C2059: syntax error : '<'
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(19) : error C2039: 'iterator' : is not a member of '`global namespace''
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(19) : error C2238: unexpected token(s) preceding ';'
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(20) : error C2143: syntax error : missing ';' before '<'
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(20) : error C2501: 'list' : missing storage-class or type specifiers
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(20) : error C2059: syntax error : '<'
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(20) : error C2238: unexpected token(s) preceding ';'
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(24) : error C2039: 'iterator' : is not a member of '`global namespace''
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(23) : error C2629: unexpected 'class Ring<T>::iterator ('
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(23) : error C2334: unexpected token(s) preceding ':'; skipping apparent function body
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(32) : error C2143: syntax error : missing ';' before '<'
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(32) : error C2501: 'list' : missing storage-class or type specifiers
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(32) : error C2059: syntax error : '<'
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(32) : error C2039: 'reference' : is not a member of '`global namespace''
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
E:\aec\test\dfd.cpp(32) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body
        E:\aec\test\dfd.cpp(71) : see reference to class template instantiation 'Ring<T>' being compiled
Error executing cl.exe.

test.exe - 26 error(s), 0 warning(s)
0
NiJuste Messages postés 8 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 1 mars 2010
15 juin 2008 à 00:23
Je comprends, mais le code la, je peux l'utiliser en VC++,
qu'est ce que je dois changer pour que ca marche en VC++.
Merci.
0
NiJuste Messages postés 8 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 1 mars 2010
15 juin 2008 à 13:27
Merci bcp pour vos reponses, elles m'aident enormement.
j'ai compile ca en VC++ 6.0, mais je sais pas si c'est un probleme de VC++ 6.0 ou bien une mauvaise utilisation de ma part, on dirait que le visual 6.0 ne reconnait pas les  "using namespace std;" , je l'ai enleve et devant chaque "list", j'ai du ajoute le mot "std::", et les erreurs on disparu
0
NiJuste Messages postés 8 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 1 mars 2010
15 juin 2008 à 13:32
et le seul probleme qui me reste maintenant ce qu'en declarant
typedef DFD<Element>::iterator It;
It it;
j'ai encore une erreur de compilation
e:\aec\analyseur d expression complexe\definition.h(131) : error C2512: 'iterator' : no appropriate default constructor available.

Comment resoudre ce genre de probleme
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
16 juin 2008 à 22:03
Essai: typedef typename DFD<Element>::iterator It;
0
Rejoignez-nous