我想創建一個樹結構使用一些讀取流時調用的處理函數。我認爲問題在於,我的變量是在函數的作用域中創建的,並且在函數結束時會消失,並且指針指向無。C++指針和變量範圍
我不知道採取什麼方法來保持內存中的對象,同時仍然允許樹是可擴展的。
我已經做了一個簡化版本的代碼:它編譯和運行,但'段'對象的父子關係都是錯誤的。
class Segment
{
public:
Segment* parent;
list<Segment*> children;
string name;
};
void OpenSegment(Segment* p_segCurrentseg);
void CloseSegment(Segment* p_segCurrentseg);
int _tmain(int argc, _TCHAR* argv[])
{
Segment parent;
parent.name="parent";
Segment* p_segCurrentseg=&parent;
OpenSegment(p_segCurrentseg);
OpenSegment(p_segCurrentseg);
OpenSegment(p_segCurrentseg);
CloseSegment(p_segCurrentseg);
return 0;
}
void OpenSegment(Segment* p_segCurrentseg)
{
Segment child;
child.name="child";
p_segCurrentseg->children.push_front(&child);
child.parent=p_segCurrentseg;
p_segCurrentseg=&child;
}
void CloseSegment(Segment* p_segCurrentseg)
{
p_segCurrentseg=p_segCurrentseg->parent;
}
也許它爲你編譯,但它肯定不會編譯我。無論如何,看起來你需要使用'new'。 – ooga