我正在寫一個應該演示如何樹工作的二進制程序,它有點像20層的問題,但它在最後增加了新的問題,等等。EXC_BAD_ACCESS二叉樹構造
我有最它的代碼將會被編譯,但是當我嘗試執行它時,它給了我錯誤「EXC_BAD_ACCESS」(在Xcode中)。
下面是從我的main.cpp的摘錄初始化樹:
std::string firstSubjectGuess = "rabbit";
tree guessTree(firstSubjectGuess);
我的頭文件中創建的節點結構,並宣佈構造/析構的頂部:
struct node
{
std::string question;
std::string subject;
node *yes = NULL;
node *no = NULL;
};
class tree
{
public:
//tree();
tree(std::string subject);
~tree();
然後樹類的構造函數:
tree::tree(std::string subject){
node* root;
root->yes = NULL;
root->no = NULL;
root->question = "Are you thinking of " + getAOrAn(subject[0]) + " " + subject + "?";
root->subject = subject;
this->root = root;
cursor = root;
}
在當前狀態下,我得到在線的錯誤
root->subject = subject;
在類文件中。但是,如果我改變main.cpp中採取串,而不是直接的變量
(IE
tree guessTree("rabbit");
)我在該行得到的錯誤
root->yes = NULL;
我希望這是一些簡單的東西,我只是俯視,因爲這是通常的情況。
您的構造函數調用*未定義的行爲*。 'root'是不確定的。它從來沒有被授予一個有效的節點地址,但你可以反覆引用它。不相關的,我強烈建議不要將本地自動變量命名爲成員。是的,你可以,但這並不意味着你*應該*。 – WhozCraig
感謝您的提示。我將確保切換這些變量的命名。 – link270