【发布时间】:2014-09-01 02:46:00
【问题描述】:
我最近问了一个关于在 C++11 中创建类的正确方法的问题。我通过建立一个Tree 类来练习,我收到了一些很棒的建议。但是,我在理解为什么我的代码不起作用时遇到了一些麻烦。
尤其是,我无法理解为什么我的 insert 方法无法正常工作。
template<typename T>
class Tree {
private:
struct Node {
T data;
Node* p_left;
Node* p_right;
};
Node* newNode(T data) { return new Node {data, nullptr, nullptr}; }
Node* root_;
//Other functions, etc... (copy constructor and copy assignment operator)
public:
void insert(T const data) {
Node*& root = root_;
while (root != nullptr) {
root = (data <= root->data ? root->p_left : root->p_right);
}
root = newNode(data);
}
Tree(): root_(nullptr) {}
//Other constructors, functions, etc...
};
如果我创建一个新的Tree 对象,然后用一些数据填充该对象,则该对象仅保留最后插入的数据。我知道我在某个地方因为我的指针引用而搞砸了,但我不知道在哪里。任何正确方向的提示将不胜感激。
【问题讨论】:
-
你知道如何使用调试器来单步调试你的代码吗?
-
您希望插入方法如何工作?什么是正确的函数?
-
@Fumu7 你的意思是我期望它做什么?它检查树中的空白区域,如果没有空白区域,则将数据适当地插入树中,以便创建 BST
标签: c++ class pointers reference