|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Porto Sant' Elpidio (ap)
Messaggi: 789
|
[c++] templates, set e iteratori, errore strano
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
__________________
Abit aw9-d max, pentium code 2 duo E7300, sapphire radeon hd 4750, corasir 650W |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Codice:
#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;
}
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 Codice:
template <class T> T *cercaPerId(unsigned ident, set<T *> &tabella)
{
typename set <T *>::iterator it;
.....
}
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Porto Sant' Elpidio (ap)
Messaggi: 789
|
ti ringrazio tantissimo. non ci ho capito molto ma quantomeno funziona
__________________
Abit aw9-d max, pentium code 2 duo E7300, sapphire radeon hd 4750, corasir 650W |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:11.




















