2016-05-27 6 views
0

A. hSegfault in Konstruktor Schlüsselwort diese

#ifndef A_H 
#define A_H 

#include "B.h" 

class A{ 
public: 
    B* b; 

A(){ 
    b->ownership = this; 
}; 

}; 
#endif 

B.h

#ifndef B_H 
#define B_H 

class A; 

class B{ 
public: 
    A* ownership; 

}; 

#endif //B_H 

main.cpp

#include "A.h" 

class C{ 
    A a1; 
    A a2; 
}; 

int main() 
{ 

    C c; 

    return 0; 

} 

Commands:

g++ -g main.cpp -o main 
./main 

Dieses Programm schlägt mit Segmentierungsfehler fehl.
"gdb Hauptkern" sagte mir, dass Fehler in String war: "b-> Besitz = dies;"

Frage: Wo ist meine Schuld? Was sollte ich wissen, um mehr von diesen Fehlern zu machen? Vielen Dank.

+3

Der Zeiger 'B *' wurde in As Konstruktor nicht initialisiert. Es zeigt auf nicht definierte Region. – kennytm

Antwort

4

Das Problem ist in dieser Klasse:

class A 
{ 
public: 
    B* b; 

    A() 
    { 
     b->ownership = this; 
    } 
}; 

Sie dereferencing b aber Sie haben keine Instanz B erstellt.