0

试图将我的二叉搜索树(BST)的根传递给UI函数(我需要将其作为可修改变量传递,或者无论如何调用它)

主文件

cmd = UI.uiCmd()

BST<Matrix> *data = new BST<Matrix>;
Matrix mat;

UI.handle (cmd, mat, data); // passing command, class object, root of BST

标题中的 UI 类具有:

private:
void handle (int, Matrix, BST<Matrix *>);

并在.cpp文件中:

void ui::handle(int cmd, Matrix matrix, BST<Matrix *> data)

我知道我在某个地方搞砸了,但我不能说在哪里,我对指针的把握很差

我得到的错误:BST<Matrix>&*它在函数询问时思考BST<Matrix> *

我现在不打算过多地使用 C++,因此不需要详细的答案(尽管表示赞赏)。

4

3 回答 3

3

您的函数签名应如下所示

void handle (int, Matrix, BST<Matrix>*)

代替

void handle (int, Matrix, BST<Matrix *>)
于 2012-06-14T11:30:47.093 回答
2

首先BST<Matrix *>不一样BST<Matrix>*。一个是指针容器,另一个是指向容器的指针。

其次,如果你想让函数修改一个参数,你可以通过引用传递它:

void ui::handle(int cmd, sMat matrix, BST<sMat>& data) 

并称它为

cmd = UI.uiCmd() 

BST<Matrix> data;
Matrix mat; 

UI.handle(cmd, mat, data);
于 2012-06-14T11:31:31.710 回答
1

您已创建

    BST<Matrix> *data = new BST<Matrix>;

但该函数要求一个BST<Matrix*>参数。注意细微的差别

    BST<Matrix> * IS NOT same as  BST<Matrix*>
于 2012-06-14T11:31:04.910 回答