Odzilla
11-11-2005, 08:28
Ich stehe vor einem kleinen Rätsel:
Ich habe eine Klasse, die als Glied einer verketteten Liste fungiert und einen Pointer auf eine Datenklasse enthält.
Ich habe zwei verschiedene Methoden der Klasse, die in der verketteten Liste hängt, die dieselbe funktion der Datenklasse aufrufen. Leider stürzt das Programm bei einem Aufruf ab, beim andren jedoch nicht.
cMyData * cInternalNode::Search(cMyData * theData)
{
if(MY_DEBUG)cout << "cInternalNode::Search()" << endl;
if(MY_DEBUG)cout << "myData: " << myData << endl;
myData->Show(); // <- hier funktionierts
[...] }
void cInternalNode::Show()
{
if(MY_DEBUG)cout << "cInternalNode::Show()" << endl;
if(MY_DEBUG)cout << "myData: " << myData << endl;
myData->Show(); // <- hier gibts nen segfault
[...] }
Ich bin ratlos .. wie kann es sein, dass die Funktion mal geht und mal nicht?
btw: myData hat bei beiden Aufrufen den selben Wert, zeigt also auf dieselbe Instanz der Datenklasse.
Ein theoretischer Ansatz, wie sowas möglich ist wäre schonmal genug *gg*
Ich habe eine Klasse, die als Glied einer verketteten Liste fungiert und einen Pointer auf eine Datenklasse enthält.
Ich habe zwei verschiedene Methoden der Klasse, die in der verketteten Liste hängt, die dieselbe funktion der Datenklasse aufrufen. Leider stürzt das Programm bei einem Aufruf ab, beim andren jedoch nicht.
cMyData * cInternalNode::Search(cMyData * theData)
{
if(MY_DEBUG)cout << "cInternalNode::Search()" << endl;
if(MY_DEBUG)cout << "myData: " << myData << endl;
myData->Show(); // <- hier funktionierts
[...] }
void cInternalNode::Show()
{
if(MY_DEBUG)cout << "cInternalNode::Show()" << endl;
if(MY_DEBUG)cout << "myData: " << myData << endl;
myData->Show(); // <- hier gibts nen segfault
[...] }
Ich bin ratlos .. wie kann es sein, dass die Funktion mal geht und mal nicht?
btw: myData hat bei beiden Aufrufen den selben Wert, zeigt also auf dieselbe Instanz der Datenklasse.
Ein theoretischer Ansatz, wie sowas möglich ist wäre schonmal genug *gg*