J'essaie simplement de déclarer une carte iterator mais je reçois une erreur de compilation en disant « attendre, avant qu'il »Déclarer un iterator std :: carte provoque une erreur bizarre
je crois qu'il est parce que je ne l'ai pas inclus tout l'espace de noms std (using namespace std;) mais intentionnellement je ne veux pas tout inclure.
Mon code:
#include <map>
#include <string>
template <class Object>
class Cont
{
public:
Cont() {}
Object* get(unsigned int nID)
{
std::map <unsigned int, Object*>::iterator it = m.begin(); // error here "expected ; before it" what is this error?
for (; it != m.end(); it++)
{
if ((*it).second->ID == nID) { return (*it).second; }
}
return NULL;
}
std::map <unsigned int, Object*> m;
};
Je l'ai essayé aswell mais il ne fonctionne pas:
std::map <unsigned int, Object*>::std::iterator it = m.begin();
Renvoyez-vous déclarer la classe 'Object' quelque part avant cette classe de modèle? Si non, alors c'est peut-être ce qui le cause. –
Beaucoup de détail ici: http://stackoverflow.com/questions/610245/where-and-why-do-i-have-to-put-template-and-typename-on-dependent-names/613132#613132 –