Encore moi,
Dans ta fonction :
1 2 3 4
| vector<float>* Camera::getpositionCam(void)
{
return this->positionCam[0];
} |
Ici ce que tu fais c'est que tu retournes la valeur de la première coordonnée de ton vecteur et non le vecteur lui même.
Si tu veux retourner l'adresse du vecteur lui même, c'est :
1 2 3 4
| vector<float>* Camera::getpositionCam(void)
{
return &(this->positionCam); //retourne l'adresse de ta variable positionCam
} |
un bref rappel sur les adresses :
le & devant une variable permet de retourner l'adresse de cette variable(1).
le * devant une adresse permet de retourner la valeur de la variable situé à l'adresse indiquée(2). A ne pas confondre avec la déclaration d'une adresse qui est précédé du type de l'objet sur le quel pointe l'adresse(3).
Exemple :
1 2 3 4
| int * adresse_sur_int; // (3) déclaration d'une adresse pointant sur un int
int mon_entier = 10;
adresse_sur_int = &mon_entier; //(1) enregistre l'adresse de ma variable mon_entier
cout<< (*adresse_sur_int);//(2) affiche la valeur de l'entier à l'adresse adresse_sur_int, la valeur entier à cette adresse est 10. |
En espérant que ce soit un peu plus claire, mais le mieux c'est d'aller voir les faq et le tutoriel de developpez 
Ensuite pour :
1 2 3 4 5 6 7 8 9
| vector<float>* Camera::getpositionCam(void)
{
vector<float>* position = NULL;
(*position)[0] = positionCam[0];
(*position)[1] = positionCam[1];
(*position)[2] = positionCam[2];
return position;
} |
Il y a pas mal d'erreur, du au fait de la mauvaise compréhension des adresses/pointeurs.
Quand tu déclares :
vector<float>* position = NULL;
ton pointeur position pointe sur aucune adresse (NULL);
Donc toutes opération sur est aberrant.
Voilà en espérant que ca soit plus claire.
Partager