Ajuda C++

5 respostas
jPscoralicK

Apesar de o fórum tratar de assuntos relacionados ao Java, sei que muita gente aqui saca de C++. Então, quem puder me ajudar nesta questão, por favor, faça-o!

No meu código há o seguinte método:

Vector getPosition() { return position; }

Daí, em outra parte do código, criei a seguinte varíavel, que recebe o Vector:

Vector vterra = terra->getPosition();

Até aí, tudo beleza. A inteção minha foi copiar os valores obtidos através do retorno do método getPosition, para o Vector vterra.

Mas, posteriormente, tentei fazer a seguinte atribuição, com o intuito de atribuir à variável a o primeiro elemento do Vector vterra:

int a = vterra[0];

Contudo, ocorreu o seguinte erro de compilação:

no match for ‘operator[]’ in ‘vterra[0]’

:arrow: Alguem sabe o que pode estar ocorrendo?

5 Respostas

T

Amigo, onde está declarada a classe Vector? A única que conheço é o template vector (em <vector>), que não é a mesma coisa. Um exemplo de utilização:

#include <vector>
#include <iostream>
using namespace std;
...
vector<int> numeros;
numeros.push_back (1);
numeros.push_back (2);
numeros.push_back (3);
for (int i = 0, size = numeros.size(); i < size; ++i) {
    cout << numeros [i] << endl;
}
jPscoralicK

Sim, é o template Vector !

T

Hum, então se é um template, deveria ter o "<>", como mostrei no código acima.
Deve ser outra coisa, que você não mostrou para a gente, já que "Vector" != "vector" (acho que a sua quilometragem de C++ é suficiente para lhe dizer isso).
De qualquer maneira, em código C++ é aconselhável sempre usar a STL em vez de outras bibliotecas, já que ela é parte do padrão ISO C++, se não me engano. Mesmo no Microsoft Visual C++ prefiro usar vector<> em vez de CArray (que faz parte do MFC).

jPscoralicK

Saquei cara. Consegui aqui. Valeu!

cassio

Pelo erro, acho que não é a classe vector da STL não, pois esta possui o operador [] sobrecarregado por default. O erro apresentado indica que o operador [] não foi sobrecarregado na definição da classe Vector.

Criado 20 de dezembro de 2007
Ultima resposta 20 de dez. de 2007
Respostas 5
Participantes 3