Si tu créer un second objet, la variable est recrée lors du constructeur. A moins que t'utilise une classes statique ou un Singleton.
Tu pourrai mettre un sample qqpart ?
Si tu créer un second objet, la variable est recrée lors du constructeur. A moins que t'utilise une classes statique ou un Singleton.
Tu pourrai mettre un sample qqpart ?
La programmation est une course entre le développeur, qui s’efforce de produire des applications à l’épreuve des imbéciles, et l’univers qui s’efforce de produire de meilleurs imbéciles... L’univers a une bonne longueur d’avance !!!
Si t'as une version minimale de ton code qui reproduit ton crash, on pourra sans doute t'aider. Ca doit être un truc tout con.
T'as rien en static ? Pas d'utilisation de pointeurs ?
Si, bien sur, voilà le code du .h et du .cpp de ma classe, avec mon main.cpp :
Static_Body.h :
Static_Body.cpp :Code:#include <string> #include <Box2D/Dynamics/b2World.h> #include <SFML/Window.hpp> #include <SFML/Graphics.hpp> #include <SFML/System/Vector2.hpp> class Static_Body { public: Static_Body(){}; Static_Body(float posX, float posY, float TailleX, float TailleY, b2World wld); private : sf::Vector2f m_size; sf::Vector2f m_pos; };
Et le main.cpp :Code:#include <Box2D/Dynamics/b2Body.h> #include <Box2D/Collision/Shapes/b2PolygonShape.h> #include <SFML/Graphics/RectangleShape.hpp> #include "Static_Body.h" #include <iostream> Static_Body::Static_Body(float posX, float posY, float TailleX, float TailleY, b2World wld) { m_pos.x = posX; m_pos.y = posY; m_size.x = TailleX; m_size.y = TailleY; std::cout << "Fin initialisation des variables\n" ; b2BodyDef objDef; objDef.position.Set(m_pos.x, m_pos.y); b2Body* objBody = wld.CreateBody(&objDef); b2PolygonShape groundBox; groundBox.SetAsBox(TailleX, TailleY); objBody->CreateFixture(&groundBox, 0.0f); std::cout <<"Fin création objet \n"; }
Merci d'avanceCode:#include <iostream> #include <Box2D/Box2D.h> #include <SFML/Window.hpp> #include <SFML/Graphics.hpp> #include <iostream> #include "Static_Body.h" int main() { b2World world = b2World(b2Vec2(0, 0)); Static_Body mur_gauche(5, 10, 5.0, 200.0, world); Static_Body mur_droite(150, 140, 300.0, 5.0, world); }
Je suppose que b2World est une entité, l'instance ne devrait donc pas être passée par copie au constructeur de Static_Body, mais par référence ou par pointeur (plutot par référence).
Oui, sinon tu modifies juste la copie. De même, objDef est une variable locale qui va mourir dès que l'exécution du constructeur terminera. Vu que tu prends son adresse, c'est peut-être pas ce que tu veux. Et que devient objBody quand on sort du constructeur ?
Je pense la même chose que Møgluglu, objDef et groundBox meurent à la sortie du constructeur, et objBody reste perdu en mémoire sans référence. Essaie de déclarer un membre pour stocker ces variables genre :
Code:#include <string> #include <Box2D/Dynamics/b2World.h> #include <SFML/Window.hpp> #include <SFML/Graphics.hpp> #include <SFML/System/Vector2.hpp> class Static_Body { public: Static_Body(){}; Static_Body(float posX, float posY, float TailleX, float TailleY, b2World wld); private : sf::Vector2f m_size; sf::Vector2f m_pos; b2BodyDef m_objDef; b2Body* m_pObjBody; b2PolygonShape m_groundBox; };Code:#include <Box2D/Dynamics/b2Body.h> #include <Box2D/Collision/Shapes/b2PolygonShape.h> #include <SFML/Graphics/RectangleShape.hpp> #include "Static_Body.h" #include <iostream> Static_Body::Static_Body(float posX, float posY, float TailleX, float TailleY, b2World wld) { m_pos.x = posX; m_pos.y = posY; m_size.x = TailleX; m_size.y = TailleY; std::cout << "Fin initialisation des variables\n" ; m_objDef.position.Set(m_pos.x, m_pos.y); m_pObjBody = wld.CreateBody(&m_objDef); m_groundBox.SetAsBox(TailleX, TailleY); m_pObjBody->CreateFixture(&m_groundBox, 0.0f); std::cout <<"Fin création objet \n"; }
La programmation est une course entre le développeur, qui s’efforce de produire des applications à l’épreuve des imbéciles, et l’univers qui s’efforce de produire de meilleurs imbéciles... L’univers a une bonne longueur d’avance !!!
"Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."
Ce qu'il faut savoir, c'est qu'on ment beaucoup aux minmatars, surtout lorsqu'ils posent des questions du style: "t'es sûr que ça vole, ce truc ?" Cooking Momo, le 30/08/09
Ça me rappelle un coding4fun où les mecs avaient fait un système de succès pour Visual Studio
Question Visual Studio !
Y'a pas un raccourci qui permettrait de savoir où on est dans le code ?
En gros, on se positionne sur une ligne, et ça nous donnerait la classe>méthode>condition, etc. ?
Quel langage ? En C++/C#, il t'indique déjà dans quelle classe/méthode tu es. Pour le reste je ne sais pas si ça existe.
Tu peux partir de https://atom.io/packages/activate-power-mode
"Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."
En parlant de Visual Studio, y-a-t-il des courageux qui se servent déjà de 2015 au bureau?
Oui, et il est vraiment pas mal. Le truc bien, c'est l'affichage des erreurs ou des gros blocs de commentaire via des points de couleurs dans l’ascenseur de droite. C'est tout con, mais c'est vachement bien pour bouger rapidement dans le code
Pas de souci rencontré sur 2012 là-dessus, et pourtant, je m'y connecte parfois sur un TSE avec une connexion super lente.