|
Page : 1 2 Page Précédente | |
Auteur | Sujet : Des conseils sur mon programme, SVP |
Publicité | Posté le 02-06-2004 à 18:08:48 |
yawen | ben il faut que mon programme récupère le pointeur sur l'objet créé, pour pouvoir le modifier. bon, je met un bout de code (inventé pour l'occasion) qui aurait pu être dans mon programme principal :
Message édité par yawen le 02-06-2004 à 18:37:18 |
yawen | ah non, désolé, je viens de voir ce que tu voulais dire... effectivement, ça pourrais marcher, mais ce serais plutot
|
xterminhate Si vis pacem, para bellum. | Exact, je suis allé un peu vite Comment gères tu le retrait des objets dans ta liste nodes ? --------------- Cordialement, Xterm-in'Hate... |
yawen | éh, c quoi ça, tu as retiré ton message ? (si c'est possible ?) |
yawen | alors je donne la classe à partir de laquelle je fais mon objet 'nodes' :
Message édité par yawen le 02-06-2004 à 18:55:58 |
xterminhate Si vis pacem, para bellum. | Est ce que l'utilisation d'une liste (std::liste<GL_Node*> ) ne permetrait pas deja de simplifier un peu ta classe container. D'ailleurs, si elle n'a qu'une seule instance, tu pourrais en faire un singleton pour le style. --------------- Cordialement, Xterm-in'Hate... |
yawen | pour répondre à ta question, les retraits sont fais de la manière suivante : l'objet considéré est détruit (avec delete), et le pointeur vers cet objet dans le tableau est remis à NULL. quand on ajoute un objet, le programme cherche le premier pointeur NULL dans le tableau, il créé l'objet (new) et met l'adresse dans le tableau. si tout les pointeurs sont déjà utilisés, le tableau est agrandit. |
yawen | euh elle n'a pas du tout qu'une seule instance, et le principe de cette classe c'est que quand je détruit un objet dedans, elle ne décale pas tous les autres, histoire de garder le maximum de performances. sinon, je sais pas ce que c'est un singleton... pour info, cette classe est aussi utilisée pour stocker les objets physiques du jeu (description solide de l'objet, pour gérer les collisions), et les effets graphiques (en gros, tout ce qui marche avec des effets de transparence) |
xterminhate Si vis pacem, para bellum. | Lorsqu'un objet complexe crée à lui seul N objets dans ta liste, comment ca se passe lorsque ton objet complexe doit etre detruit ( comment sont retirés les N objets de la liste constituant ton objet complexe ) ? Gardes tu une trace de ces N objets dans la classe correspondant à ton objet complexe ? --------------- Cordialement, Xterm-in'Hate... |
Publicité | Posté le 02-06-2004 à 19:07:07 |
yawen | mais en fait, je ne sais pas comment marche std::liste<>. je connaissait std::vector<> mais ça ne corespond pas à ce que je veux, puisque quand on détruit un élément, il décale tous les autres... par exemple, s'il s'agit de la liste de tous les projectiles lancés par tous les vaisseaux, vu que ça bouge pas mal (les projectiles sont créés et détruits très vite), ça fais tout ramer... |
yawen | pfff, c galère, on se répond avec un message de retard.. hum, bref... alors pour répondre à
|
xterminhate Si vis pacem, para bellum. | En somme, tu as autant de listes d'objets que d'objets complexes dans le jeu ? --------------- Cordialement, Xterm-in'Hate... |
yawen | ah oui, et j'ai une autre question : je voudrais mettre en private certains éléments de la classe ContainerP, mais que la classe HandleC puisse quand même (et seulement cette classe) accéder aux éléments privés de la classe ContainerP. C'est possible ? |
xterminhate Si vis pacem, para bellum. | Du devrais faire un petit effort pour exploiter std::liste. Cela pourra sans doute te servir pour d'autres applications. --------------- Cordialement, Xterm-in'Hate... |
yawen | non non, je n'ai pas autant de listes d'objets que d'objets complexes dans le jeu ! tout est centralisé dans une seule liste (sinon ça n'a aucun intérêt). |
yawen | je peux trouver où de la doc sur std::liste ? |
xterminhate Si vis pacem, para bellum. | Est ce que des classes héritent de HandleC ? si oui de quelle anière (public/private) ? --------------- Cordialement, Xterm-in'Hate... |
xterminhate Si vis pacem, para bellum. |
yawen | non, aucune classe n'hérite de HandleC. bon, je met un exemple, ce sera peut-être plus clair :
Message édité par yawen le 02-06-2004 à 19:20:34 |
xterminhate Si vis pacem, para bellum. | Declares protected: les membres dont tu veux restreindres l'accès à HandleC uniquement. (A vérifier, depuis que je code en asm et en C, je commence à oublier le C++, lol). --------------- Cordialement, Xterm-in'Hate... |
yawen | ok, merci pour le lien, je verrais ça si je dois faire un truc du genre dans le futur, mais là je me vois mal refaire tout mon code pour utiliser std::list |
yawen | euh ouais, mais je les déclare comment protected ? faut bien que je mettre quelque part que c'est par rapport à HandleC que je veux restreindre l'accès (enfin laisser l'accès, plutot). C'est quoi la syntaxe ? (je suis un peu perdu depuis que MSDN ne veut plus marcher sur mon pc... oui, bon, je sais, utiliser VC++ c nul, mais bon, c le premier compilateur que j'ai eu entre les mains...) |
xterminhate Si vis pacem, para bellum. | Programmes dans le but d'apprendre un maximum de chose (les listes par exemple ). D'ailleurs, j'ai rarement vu des projes perso se terminer ! --------------- Cordialement, Xterm-in'Hate... |
xterminhate Si vis pacem, para bellum. | A ma connaissance tu ne peux pas restreindre à un classe dérivée en particulier.
--------------- Cordialement, Xterm-in'Hate... |
yawen | En fait, mon problème (qui n'en est pas forcément un), c'est que je ne sais pas si c'est une bonne idée de vouloir tout centraliser dans un même tableau, et de surcroit d'utiliser des objets de type différents dans le même tableau... est ce que par exemple je ferais pas mieux de mettre directement |
yawen | ben le problème c'est que HandleC n'a aucun lien avec ContainerP, enfin aucune n'est dérivée de l'autre... c'est quoi, les classes amies ? |
xterminhate Si vis pacem, para bellum. | Ce que tu as fais est correct. Tous tes objets dérives d'une classe (plus ou moins) abstraite n'est ce pas ? --------------- Cordialement, Xterm-in'Hate... |
xterminhate Si vis pacem, para bellum. | Ah pardon, je croyais que HandleC dérivait de ContainerP... ca se complique un peu la --------------- Cordialement, Xterm-in'Hate... |
yawen | oui, c'est exactement ça, pour le coup de la dérivation de la classe plus ou moins abstraite Message édité par yawen le 02-06-2004 à 19:34:05 |
yawen | en fait le seul lien que HandleC a avec ContainerP, c'est le pointeur ContainerP<T1> *owner; qui permet de savoir dans quel tableau est stocké l'objet |
yawen | et je voudrais justement que par l'intermédiaire de ce pointeur, il puisse demander au tableau de supprimer l'objet (quand on détruit l'instance de HandleC), mais par le biais d'une fonction spéciale (DeleteH) qu'il est le seul à pouvoir employer |
xterminhate Si vis pacem, para bellum. | Tu as essayé de faire un diagramme de l'architecture de ton programme (classes, héritages, ...etc ?).
--------------- Cordialement, Xterm-in'Hate... |
yawen | le truc, c que dans le tableau, les objets peuvent être créés de deux moyens : par un objet HandleC, ou alors directement. et quand je détruit le tableau, je voudrais m'assurer que tous les objets créer par le biais de HandleC ont déjà été détruits (pour être sûr qu'il n'y a pas de soucis de mémoire). de plus, il ne faut pas qu'on puisse directement détruire un objet qui a été créé par le biais de HandleC, car sinon, HandleC aurait une référence sur un objet détruit... bref, mon problème est que plusieurs objets ont des pointeurs sur un même objet, et qu'il faut qu'ils soient tous synchronisés : il ne faut surtout pas que l'un d'eux pointent sur un objet détruit... |
yawen | mdr, euh ben de toute façon, moi aussi j'ai faim, et de plus ma copine (qui a finis ses partiels aujourd'hui) organise un apéro avec des potes (je viens de m'en souvenir, ou plutot elle viens de m'en souvenir en m'appelant), donc faut que j'y aille... j'ai jamais essayé de faire un diagramme, mais même si j'en fais un, j'aurais du mal à l'envoyer sur internet, nan ? bon, ben je reviens pas avant demain, alors... |
xterminhate Si vis pacem, para bellum. | Pourquoi tu voudrais detruire ce tableau... ++ Message édité par xterminhate le 02-06-2004 à 19:46:03 --------------- Cordialement, Xterm-in'Hate... |
yawen | ben quand on quitte le programme... juste histoire de vérifier qu'il n'y a eu aucun soucis tout au long de l'éxécution... |
xterminhate Si vis pacem, para bellum. | et bien on revient sur l'idée du singleton... --------------- Cordialement, Xterm-in'Hate... |
yawen | ouais, sauf que je ne sais toujours pas ce que c'est qu'un singleton... |
Joel F Real men use unique_ptr | un singleton est un objet à instance unique.
Message édité par Joel F le 03-06-2004 à 10:29:45 |
Publicité | Posté le |
Page : 1 2 Page Précédente |
Sujets relatifs | |
---|---|
crontab : programme java | Afficher un programme C++ Win32 sur le bureau, comment faire ? |
Comment optimiser proprement et inteligement un programme N | Petite vérif sur mon script de session, svp ? |
Programme pour faire du C++ (code + design) | Besoin d informations sur les DLL SVP |
execution de programme | programme qui donne les nombres parfaits |
Peut on lancer une commande shell unix apartir d'un programme Ada | programme C# erreur :Unable to connect to any hosts.... |
Plus de sujets relatifs à : Des conseils sur mon programme, SVP |