CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Erreur c++] Pure virtual method called

Dharxy
Dharxy
Niveau 6
11 juillet 2013 à 21:06:42

Salut à tous,
J'ai rencontré aujourd'hui une erreur que je n'avais jamais vu avant je vous la d'écrit :
Je suis entrain de créer un shoot them up depuis hier, j'ai donc ajouté une entité joueur qui peut tiré des laser vers le haut.
Lorsque je tire une première fois tout va bien, mais lorsque je tir mon deuxième missile le jeux crash et un message s'affiche dans la console disant : "pure virtual method called terminate called without an active exception".
J'ai déjà fait quelques recherches sur google mais rien de concluant ou qui n'aurait pu m'aider.
Je suis presque certain que le problème vient d'un pointeur nommé m_sprite que je promène un peu partout (ce qui a du causé l'erreur) merci a ceux qui m'aideront à mis retrouvé ! :-)

Fichiers concerné :
EntityPlayer.cpp http://pastebin.com/2X4rdXGj
EntityPlayer.h http://pastebin.com/rgakcPc6
Entity.cpp http://pastebin.com/07UJ7ACJ
Entity.h http://pastebin.com/6xziFwjF
EntityBullet.cpp http://pastebin.com/uAVgfDXG
EntityBullet.h http://pastebin.com/sJwqTBv8

LEpigeon-888
LEpigeon-888
Niveau 12
12 juillet 2013 à 01:49:15

J'ai pas trop regardé, je pourrais pas te dire d'ou vient le problème, mais j'ai vu des "inline", et je te conseillerais de les enlever, ce genre de chose il faut laisser le compilateur le faire, c'est comme déclarer qu'une fonction retourne un type primitif constant, on ne le fait pas (pour les constant, perso ça me génère un avertissement, pour l'inline j'ai jamais essayé, mais je suppose que ça doit aussi générer un avertissement nan ? :( ).

Dharxy
Dharxy
Niveau 6
12 juillet 2013 à 01:55:26

Non ça ne me génère pas d'avertissement et ça rend juste l'appel de la fonction plus rapide.

quonki
quonki
Niveau 7
12 juillet 2013 à 01:57:09

Tu fais un "delete" mais sans "new" dans Entity.cpp. En gros tu delete rien il me semble. Après je connais pas grand chose au c++ et celà ne résoudras sans doute pas ton problème mais change déjà ça.

LEpigeon-888
LEpigeon-888
Niveau 12
12 juillet 2013 à 02:46:03

Nan ça rend rien plus rapide, je t'ai dis le compilateur s'occupe de ça, et tu compiles avec quel compilateur ? Et quels options ? Si t'as pas tout activé normal que ça te génère pas d'avertissement :oui:

Enfin après ça ce trouve ça en génère jamais, mais ça me paraitrait bizarre :(

godrik
godrik
Niveau 30
12 juillet 2013 à 02:56:43

il y a un double delete de m_sprite dnas entity et dans entitybullet. Si tu le delete depuis entity, il ne faut pas le delete dans entitybullet.

Cela etant dit, c'est un cas clair de probleme de gestion de la memoire en C++. Le scope qui cree l'objet sprite est celui qui doit le supprime. ici ce n'est pas ce qui se passe et tout part en cacahuete.

LEpigeon-888
LEpigeon-888
Niveau 12
12 juillet 2013 à 03:01:30

Ouais nan en fait je crois que j'ai dis des conneries et que j'ai confondu avec autre chose, je viens de tester et aucun avertissement :pf:

Dharxy
Dharxy
Niveau 6
12 juillet 2013 à 10:14:54

J'ai trouvé le problème même si je ne le comprend pas, c'est a cause de ma fonction loadSprite, qui je l'admet est pourrie. Il faut que je la supprime et que je préfère passer l'adresse de mon sprite par les paramètre de la fonction de rendu ou d'update.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment