Bonjour,
Etant encore un grand débutant avec Irrlicht (de même en POO), et n'arrivant pas à résoudre mon problème, je me suis décidé à venir demander de l'aide, histoire d'y voir un peu plus claire
Alors voilà ; Je tente de créer une classe qui me permettra de faire apparaître mes ennemis sur mon terrain, seulement, est-il possible de passer le sceneManager en paramètre ?
Voici mon code, qui ne fonctionne pas, pourriez-vous me dire où est le problème ?
Main.cpp
Bots.h
Bots.cpp
D'avance, Merci !
Dernière modification par Boar (02-10-2013 14:11:02)
Hors ligne
irr::scene::ISceneManager &sceneManager -> irr::scene::ISceneManager *sceneManager
irlicht crée un pointeur vers sont scene manager, et tu intéragis avec lui par ce biais
or tu déclare un référence, suivant l econtext ça peut marcher mais la syntaxe d'acess est différente
après pour le concept de spawn tu devraient crée une class dédier a cela
bon après ce n'est peut être pas indispenssable dans un premier temps et il y a de nombreuse autre façon de spécializer ce context
Hors ligne
Je dis peut-être une connerie mais pour appeler
il faut que la méthode soit statique, sinon il faut créer une instance de Bots et l'utiliser "normalement".
Hors ligne
en effect je n'avais pas remarquer
mais ça dépend du context si c'est appeler depuis une classe dériver, pas de soucis, ce qui ne semble pas être le cas
trop fixer sur '&' ...
Hors ligne
Bonjour,
Magun : - J'ai tenté de résoudre le problème en testant avec les structures que tu m'as données, mais toujours rien. C’est très probablement moi qui ne fait pas ça bien ^^'
En fait tout ce que je voudrais faire, c'est gérer le tout en une fois. Que dès que j'appelle ma méthode, un personnage apparaisse à l'endroit déterminé.
Je me doute que pour pouvoir l'ajouter dans le sceneManager, je vais devoir utiliser un pointeur (non ? ).
Johnplayer : - Que veux-tu dire par " il faut créer une instance de Bots et l'utiliser 'normalement' " ?
J'ai conscience d'avoir encore beaucoup de lacunes avec irrlicht, c'est pour ça que j'y travaille ... ^^'
Encore merci
Hors ligne
pas de soucis
on t'expliquera pas à pas si veut
voire je/on peut te faire une petit architecture de base pour que tu comprenne quelque concept (template/factory/...)
tu doit aussi comprendre que t'est bots(ici scene node) doivent être encapsuler dans une class entity pour que tu puisse géré des donnée personelles, life/power/ammo/...
il veut dire par la que si tu utilise ta finction de cette façon
elle doit être défini de cette façon
sinon si tu garde ta premier déclaration tu ne peut l'utiliser que via une instance (temporaire ou non)
l'avantage du second c'est de pouvoir stocker le pointeur du scene manager dans la class Bots/Spawn et de ne pas avoir a la spécifier plustard
genre
Hors ligne
Oui je vois, j'aimerais donc m'orienter sur la seconde façon, seulement le compilateur m'annonce encore des erreurs ;
"|173|error: no matching function for call to 'Bots::Bots(irr::scene::ISceneManager*&)'|"
"|174|error: no matching function for call to 'Bots::Spawn()'|"
Vois-tu d'où ça pourrait venir ?
Hors ligne
il te faut modifier la structure de Bots pour que cette syntaxe soit accepter
usage:
ici j'ai alouer une instance de Bots (new) dans le tas que j'affect a factory et elle s'initialise via sont constructeur Bots(irr::scene::ISceneManager*), il est donc nécéssaire de le désalouer une fois qu'il n'est plus nécéssaire (delete)
Hors ligne
Je dois encore avoir fait une boulette quelque part, car en adaptant ton code au mien, j'ai encore 1 erreur à la ligne "factory -> Spawn()" : Undefined reference to Bots::Spawn()
Hors ligne
Hors ligne
Parfait ! J'ai retourné le truc dans tout les sens, alors que c'était ce "bool Bots::Spawn(){...}" qu'il me manquait dans mon Bots.cpp ! Un GRAND MERCI à toi !
Hors ligne
pas de soucis
Hors ligne