Vetores STL - acessando dados
02/01/2008
0
Olá,
Tenho uma classe Ponto e criei um método void Ponto::impressaoDeDados() que faz exatamente o que diz. Para armazenar várias instâncias dessa classe Ponto (mas na forma de ponteiros) criei um vetor STL da seguinte forma:
std::vector<Ponto*> ponto;
e seu iterador:
std::vector<Ponto*>::iterator ponto_itr;
Agora, gostaria de criar uma rotina que acessasse a função impressaoDeDados() para cada instância que estivesse no vetor ponto. Para isso, fiz o seguinte:
for(ponto_itr = ponto.begin(); ponto_itr != ponto.end(); ponto_itr++)
{
((Ponto*)(ponto_itr))->impressaoDeDados();
}
Qual é o erro disso? Meu compilador acusa:
1>.\Classe Pick Handler.cpp(73) : error C2440: ´type cast´ : cannot convert from ´std::_Vector_iterator<_Ty,_Alloc>´ to ´Ponto *´
1> with
1> [
1> _Ty=Ponto *,
1> _Alloc=std::allocator<Ponto *>
1> ]
1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Tenho uma classe Ponto e criei um método void Ponto::impressaoDeDados() que faz exatamente o que diz. Para armazenar várias instâncias dessa classe Ponto (mas na forma de ponteiros) criei um vetor STL da seguinte forma:
std::vector<Ponto*> ponto;
e seu iterador:
std::vector<Ponto*>::iterator ponto_itr;
Agora, gostaria de criar uma rotina que acessasse a função impressaoDeDados() para cada instância que estivesse no vetor ponto. Para isso, fiz o seguinte:
for(ponto_itr = ponto.begin(); ponto_itr != ponto.end(); ponto_itr++)
{
((Ponto*)(ponto_itr))->impressaoDeDados();
}
Qual é o erro disso? Meu compilador acusa:
1>.\Classe Pick Handler.cpp(73) : error C2440: ´type cast´ : cannot convert from ´std::_Vector_iterator<_Ty,_Alloc>´ to ´Ponto *´
1> with
1> [
1> _Ty=Ponto *,
1> _Alloc=std::allocator<Ponto *>
1> ]
1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Renanmzmendes
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)