首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >再次传递指向函数的指针有问题

再次传递指向函数的指针有问题
EN

Stack Overflow用户
提问于 2012-06-14 11:26:33
回答 3查看 110关注 0票数 0

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

main.cpp

代码语言:javascript
运行
复制
cmd = UI.uiCmd()

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

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

中的UI类有:

代码语言:javascript
运行
复制
private:
void handle (int, Matrix, BST<Matrix *>);

.cpp文件中:

代码语言:javascript
运行
复制
void ui::handle(int cmd, Matrix matrix, BST<Matrix *> data)

我知道我在哪里搞砸了,但我说不出是哪里,我对指针掌握得很差

我得到的错误:,它认为是BST<Matrix>&*,而函数问BST<Matrix> *

我目前不打算多使用C++,所以没有必要给出详细的答案(虽然很感激)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-14 11:30:47

您的函数签名应该看起来像

代码语言:javascript
运行
复制
void handle (int, Matrix, BST<Matrix>*)

而不是

代码语言:javascript
运行
复制
void handle (int, Matrix, BST<Matrix *>)
票数 3
EN

Stack Overflow用户

发布于 2012-06-14 11:31:31

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

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

代码语言:javascript
运行
复制
void ui::handle(int cmd, sMat matrix, BST<sMat>& data) 

把它叫做

代码语言:javascript
运行
复制
cmd = UI.uiCmd() 

BST<Matrix> data;
Matrix mat; 

UI.handle(cmd, mat, data);
票数 2
EN

Stack Overflow用户

发布于 2012-06-14 11:31:04

你创造了

代码语言:javascript
运行
复制
    BST<Matrix> *data = new BST<Matrix>;

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

代码语言:javascript
运行
复制
    BST<Matrix> * IS NOT same as  BST<Matrix*>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11032082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档