Problème de pointeur - C++ - Programmation
Marsh Posté le 13-07-2008 à 23:59:42
Dans ta fonction, tu modifies la variable locale et donc ca n'a aucune influence à l'extérieur de ta fonction. Deux solutions donc : soit tu passes une référence vers ton pointeur dans ta fonction, soit (meilleure idée à mon avis) tu alloues ton tableau à l'extérieur de ta fonction.
Sinon, attention à ton utilisation de variables globales tout de même ... Ca semble assez peu justifié ici.
Marsh Posté le 14-07-2008 à 01:20:47
Tu peut aussi retourner ton pointeur plutôt que de le prendre en paramètre et faire un truc du genre
Vertex = LoadExemple();
dans ce cas, LoadExemple ferait effet de constructeur (dans un style pauvre, ala C), et tu ferait peut-être mieux de créer une classe pour ça (ce qui au passage te permettra de gérer le delete de ton tableau avec moins de soucis).
Marsh Posté le 14-07-2008 à 15:33:55
Salut à vous!
Merci pour vos réponses rapides, j'ai fais une Class et ça marche impec .
Sinon c'est quoi les avantages de std::vector ?
Merci encore A+.
Marsh Posté le 14-07-2008 à 15:39:32
... c'est standard et certainement plus fool-proof que ta classe de tableau perso.
Juste pour voir, ta classe implante-elle une forme canonique de coplien propre ?
Marsh Posté le 14-07-2008 à 16:10:30
Ok je vais voir pour le std::vector
Sinon je n'ai qu'un constructeur et un destructeur.
Est-ce que je risque d'avoir des problèmes si je ne fais pas la forme canonique de coplien?
A++
Marsh Posté le 14-07-2008 à 16:28:39
theshockwave a écrit : Dans ta fonction, tu modifies la variable locale et donc ca n'a aucune influence à l'extérieur de ta fonction. Deux solutions donc : soit tu passes une référence vers ton pointeur dans ta fonction, soit (meilleure idée à mon avis) tu alloues ton tableau à l'extérieur de ta fonction. |
Non il n'y a pas de problème à instancier un tableau de cette façon. La variable est locale mais pointe bien vers la même zone mémoire que celle qui est copiée. Mais pour les variables globales, je suis d'accord : à éviter.
Par contre tu as oublié de désallouer ton tableau avant la sortie de ton programme.
delete[] tableau |
Marsh Posté le 14-07-2008 à 16:43:52
katmai a écrit : Ok je vais voir pour le std::vector |
amuses toi à renvoyer une instance de ta classe par valeur ou à utiliser l'opérateur = dessus ca va etre fun sans FCC
Marsh Posté le 14-07-2008 à 18:38:08
Citation : Par contre tu as oublié de désallouer ton tableau avant la sortie de ton programme. |
Oui merci j'ai vu c'est pour faire des tests j'ai pas pris le temps de le faire.
Citation : amuses toi à renvoyer une instance de ta classe par valeur ou à utiliser l'opérateur = dessus ca va etre fun sans FCC |
Ok je vois! Par contre je ne peux pas utiliser std::vector car la fonction glVertexPointer me demande un pointeur vers un GLfloat et non pas un std::vector. Y a t'il une solution?
A+
Marsh Posté le 14-07-2008 à 18:58:55
Lire la doc de std::vector
Code :
|
Marsh Posté le 13-07-2008 à 20:44:55
Salut à tous,
J'ai un problème avec un pointeur qui me rend fou !
En fait j'ai une fonction qui me crée un tableau dynamique pointé par le pointeur.
L'appel de la fonction ne crée pas de problème mais lorsque je veux accéder aux données du tableau après l'appel j'ai le droit à une erreur de segmentation.
Autre chose lorsque je met les deux fonctions dans le même fichier je n'ai pas l'erreur de segmentation et tout se passe bien.
J'utilise le compilateur g++.
graph.h :
graph.cpp :
main.cpp:
Quelqu'un as une idée d'où vient le problème problème?
Merci d'avance pour vos réponses.
A++