在此示例中使用取消引用运算符 (c++)
Use of dereference operator in this example (c++)
我不明白为什么在这个例子中,我不能通过取消引用对象来访问成员函数
这是代码的相关部分
class Search
{
public:
void run();
private:
Result* result;
Result* extractResults()
};
extractResults() 定义如下
Result* Search::extractResults()
{
Result* ris;
//as soon as i know the size, i initialize ris
ris = new Result[numOfResults];
return ris;
}
在 运行() 函数中,我调用 extractResults 来获取指向内部 ris 对象的指针
result = extractResults();
现在,我希望能够在 运行() 中访问 "result" 对象,如下所示:
result[4]->doSomething();
但是不行,必须用
result[4].doSomething();
这是为什么?
编辑
好的,我修改了代码以便能够使用取消引用运算符。我知道在这种情况下没有必要使用指针,我只是用它来练习。
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;
}
运行() 函数内部
resultP = extractResults();
resultPP = &resultP;
现在我终于可以做到了:
resultPP->doSomething();
我知道这很乱,我只是想这样做,作为一种学习方式。
谢谢!
result
是指向Risultato
数组的指针。因此 result
里面的对象实际上是值类型。如果您真的想使用取消引用运算符,则必须将 result
声明为指向指向 Resultato
的指针数组的指针。希望对您有所帮助。
我不明白为什么在这个例子中,我不能通过取消引用对象来访问成员函数
这是代码的相关部分
class Search
{
public:
void run();
private:
Result* result;
Result* extractResults()
};
extractResults() 定义如下
Result* Search::extractResults()
{
Result* ris;
//as soon as i know the size, i initialize ris
ris = new Result[numOfResults];
return ris;
}
在 运行() 函数中,我调用 extractResults 来获取指向内部 ris 对象的指针
result = extractResults();
现在,我希望能够在 运行() 中访问 "result" 对象,如下所示:
result[4]->doSomething();
但是不行,必须用
result[4].doSomething();
这是为什么?
编辑
好的,我修改了代码以便能够使用取消引用运算符。我知道在这种情况下没有必要使用指针,我只是用它来练习。
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;
}
运行() 函数内部
resultP = extractResults();
resultPP = &resultP;
现在我终于可以做到了:
resultPP->doSomething();
我知道这很乱,我只是想这样做,作为一种学习方式。 谢谢!
result
是指向Risultato
数组的指针。因此 result
里面的对象实际上是值类型。如果您真的想使用取消引用运算符,则必须将 result
声明为指向指向 Resultato
的指针数组的指针。希望对您有所帮助。