Olá, pessoal do GUJ!
Tudo bem??
Surgiu uma dúvida ao trabalhar com o iterator de um vector meu!
Vejam só o trecho de código:
vector<Palavra>::iterator it = palavras.begin();
while (it != palavras.end()) {
int i = *it->getId(); //<---------------
if (i == id) {
it = palavras.erase(it);
} else {
++it;
}
}
O problema se situa na linha apontada acima.
Invalid indirection.
Alguém tem idéia?
Aproveitando o tópico, há uma dúvida também com o operador const.
Qual o intuito de possuir o operador no exemplo abaixo?
Desde já, grato pela ajuda!!
[]s
- Conforme você percebeu, é um problema de indireção. Use:
vector<Palavra>::iterator it = palavras.begin();
while (it != palavras.end()) {
int i = it->getId(); // ou então (*it).getId();
if (i == id) {
it = palavras.erase(it);
} else {
++it;
}
}
- “const” não é um operador e sim uma palavra-chave, de múltiplos significados.
Nesse caso em específico, “const” indica que o “this” é const, ou seja, você só pode usar métodos e usar variáveis-membro de tal modo que considerem o “this” como const. Se o método pertence à classe XYZ, então this, em vez de ter o tipo “XYZ*”, tem o tipo “XYZ const *”.
@entanglement
Cara, deu certinho!!
Só não entendi muito bem sobre o const…
Tem algum link que possa me indicar para ler sobre?
[]s