View Full Version : [c++] templates, set e iteratori, errore strano
Vecchia Spugna
21-05-2007, 12:10
Salve ragazzi
facendo una cosa del genere
template <class T> T *cercaPerId(unsigned ident, set<T *> &tabella)
{
set <T *>::iterator it;
.....
}
il compilatore mi dice che vuole il punto e virgola prima di it, che è un modo come un altro per dirmi non so che dirti ma a me questa cosa non mi va bene.
sapreste indicarmi un modo alternativo per fare la stessa cosa?
vi ringrazio in anticipo
Salve ragazzi
facendo una cosa del genere
template <class T> T *cercaPerId(unsigned ident, set<T *> &tabella)
{
set <T *>::iterator it;
.....
}
il compilatore mi dice che vuole il punto e virgola prima di it, che è un modo come un altro per dirmi non so che dirti ma a me questa cosa non mi va bene.
Quello che sta cercando di dire il compilatore, e' che non riesce a capire cosa sia set<T*>::iterator. Nel caso generale e' un nome di tipo, ma nulla vieta di ridefinire iterator in una specializzazione come valore:
#include <set>
#include <iostream>
struct Foo
{
int foo;
};
namespace std
{
template <>
class set<Foo>
{
public:
static int iterator;
};
}
int std::set<Foo>::iterator = 10;
using namespace std;
int main()
{
set<Foo>::iterator = 5;
cout << set<Foo>::iterator << endl;
}
:eek:
Nel tuo caso, devi dire esplicitamente al compilatore che si tratta del nome di un tipo, per cui il tuo codice va modificato come segue
template <class T> T *cercaPerId(unsigned ident, set<T *> &tabella)
{
typename set <T *>::iterator it;
.....
}
Vecchia Spugna
21-05-2007, 20:05
ti ringrazio tantissimo. non ci ho capito molto ma quantomeno funziona :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.