这是我试图在函数中进入leftChild的代码的结构。
struct Branch {
shared_ptr<Node> leftChild;
shared_ptr<Node> middleChild;
shared_ptr<Node> rightChild;
int leftMax;
int rightMax;
Branch(shared_ptr<Node> left, shared_ptr<Node> middle): leftChild(left), middleChild(middle) {};
};
我的功能接受此
Tval find_helper(Tkey k, shared_ptr<Node>& node)
我首先在这里使用
find_helper(key, root); //though I believe this is wrong
然后我再次递归地使用它
find_helper(k, node->branch->rightChild); //also most likely wrong
我收到错误:' - &gt;'的基本操作数有非指针类型'TwoThreeTree :: Branch' find_helper(k,node-&gt; branch-&gt; rightChild);
我在代码中做错了什么
编辑(节点代码):
这就像我这样给了我
struct Node;
然后使用标记的联合:
struct Node {
enum {BRANCH_TAG, LEAF_TAG} tag;
union {
Branch branch;
Leaf leaf;
};
Node(shared_ptr<Node> inLeft, shared_ptr<Node> inMiddle) : tag(BRANCH_TAG), branch(Branch(inLeft, inMiddle)) {};
Node(Tkey k, Tval v) : tag(LEAF_TAG), leaf(Leaf(k, v)) {};
~Node() {
switch (tag) {
case BRANCH_TAG:
branch.~Branch();
break;
case LEAF_TAG:
leaf.~Leaf();
break;
}
}
};
答案 0 :(得分:0)
你应该使用。运营商不是 - &gt;运算符,因为你的函数接受引用,而不是指针。