我正在写一个应该演示如何树工作的二进制程序,它有点像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