再次无法将指针传递给函数

时间:2012-06-14 11:26:33

标签: c++ pointers parameter-passing

尝试将二进制搜索树的根(BST)传递给 UI 函数(我需要将其作为可修改的变量传递,或者它被调用)< / p>

的main.cpp

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 ++,所以不需要详细的答案(虽然赞赏)。

3 个答案:

答案 0 :(得分:3)

您的功能签名应该是

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

而不是

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

答案 1 :(得分: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);

答案 2 :(得分:1)

您已创建

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

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

    BST<Matrix> * IS NOT same as  BST<Matrix*>