尝试将二进制搜索树的根(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 ++,所以不需要详细的答案(虽然赞赏)。
答案 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*>