Voici un exemple de code pour illustrer le problème que je rencontre.C++ Héritage Problème: problème de segmentation
#include <iostream>
using namespace std;
class Foo
{
public:
Foo(int x)
{ m_x = x; }
int getX()
{ return m_x; }
private:
int m_x;
};
class Bar : public Foo
{
public:
Bar(int x) : Foo(x)
{}
//some other stuff
};
int main()
{
Bar* bar = new Bar(5);
cout<<bar->getX()<<endl;
return 0;
}
J'ai un grand projet sur lequel je travaille et j'ai une situation similaire à ci-dessus. Lorsque bar-> getX() est appelé, ce pointeur est 0x0 provoquant une erreur de segmentation. J'ai essayé de copier la fonction getX à la classe Bar, mais cela ne résout pas le problème, le pointeur this est toujours 0x0. Des idées? Je n'ai aucune idée de comment google pour cela, seulement trouvé des gens ayant des problèmes avec des fonctions virtuelles.
ps. Cet exemple fonctionne.
EDIT:
std::cout<<m_engine<<std::endl;
focus_x = m_engine->getX();
La sortie est: 0x2e6d763638667858 (non NULL), de sorte que ce n'est pas le problème ...
J'ai regardé le code en essayant de trouver un problème, puis j'ai remarqué votre commentaire au bas de cet exemple de travail. Ce sera plus facile si vous postez le code qui ne fonctionne pas, et nous pouvons vous aider à comprendre le problème. – LeopardSkinPillBoxHat
cela pourrait se produire seulement si 'nouveau' échoue ET vous utilisez en quelque sorte la version non lancante du nouveau – Chubsdad
@ Chubsdad - pour 'nouveau' échouer dans l'exemple ci-dessus, vous devez utiliser un ordinateur avec * très * limité Ressources. – LeopardSkinPillBoxHat