0

私はBTreeについてのプログラムを書きました、ここにコードがあります:

class BTreeNode 
{
public:
...
    BTreeNode* getChild(const int i);    
private:
...
};
typedef BTreeNode* BTreeP;

void _insert_key_to_unfull_tree(BTreeP &tree, int key);

// the problematic implementaion
_insert_key_to_unfull_tree(tree->getChild(i), key);

コンパイラは、BTreeNode *をBTreeP&にキャストできないと言っていますが、これをどのように修正すればよいですか?????

4

2 に答える 2

0

_insert_key_to_unfull_tree(*(tree->getChild(i)), key);

もちろん、getChild が null を返さないことを確認することもできます。

于 2013-02-26T18:26:42.410 に答える
0

この関数_insert_key_to_unfull_treeは、ポインターへの参照を想定しています。

void _insert_key_to_unfull_tree(BTreeNode*& tree, int key);

getChildポインターへの参照を返すように変更してみてください。

BTreeNode*& getChild(const int i);    

ところでtypedef BTreeNode* BTreeP、混乱を減らすために削除することをお勧めします。

于 2013-02-26T20:14:44.793 に答える