首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在本例中使用dereference操作符(c++)

在本例中使用dereference操作符(c++)
EN

Stack Overflow用户
提问于 2016-07-09 17:47:42
回答 1查看 53关注 0票数 0

我不明白为什么在这个例子中,我不能通过取消引用对象来访问一个成员函数

这是代码的相关部分

代码语言:javascript
复制
class Search
{
public:
void run();

private:
Result* result;
Result* extractResults()
};

extractResults()定义如下

代码语言:javascript
复制
Result* Search::extractResults()
{
Result* ris;
//as soon as i know the size, i initialize ris
ris = new Result[numOfResults];
return ris;
}

在run()函数中,我调用extractResults来获取指向内部ris对象的指针

代码语言:javascript
复制
result = extractResults();

现在,我希望能够访问“结果”对象,在run()中,如下所示:

代码语言:javascript
复制
result[4]->doSomething();

但它不起作用,我必须用

代码语言:javascript
复制
result[4].doSomething();

为什么会这样呢?

编辑

好的,我修改了代码,以便能够使用取消引用操作符。我知道在这种情况下没有必要使用指针,我只是把它用作练习。

代码语言:javascript
复制
class Search
{
public:
void run();

private:
Result** resultPP;
Result* resultP;
Result* extractResults()
};

Result* Search::extractResults()
{
Risultato* ris;
//as soon as i know the size, i initialize ris
ris = new Risultato[numOfResults];
return ris;
}

在run()函数中

代码语言:javascript
复制
resultP = extractResults();
resultPP = &resultP;

现在我终于可以做到:

代码语言:javascript
复制
resultPP->doSomething();

我知道这很麻烦,我只是想这样做,作为学习的一种方式。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-09 17:58:32

result是指向Risultato数组的指针。因此,result中的对象实际上是值类型。如果您真的想使用取消引用操作符,则必须将result声明为指向指向Resultato的指针数组的指针。我希望这能帮上忙。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38284617

复制
相关文章

相似问题

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