繁体   English   中英

在C ++中访问指向指针的指针

[英]Accessing a Pointer to a pointer in C++

嗨,我在我的iPhone应用程序中使用了一个第三方库,该库使用C ++,我需要使用的一种方法返回一个指向类指针的指针。 像如下。

DLL classAttributes** getAttributes();

我可以成功调用该方法,并将值返回到指针的指针中,就像这样;

classAttributes **attributes = cPPClass->getAttributes();

但是我似乎无法访问该类上的任何方法,例如,我知道该类具有一个名为getName()的函数; 但是当我尝试调用它时,我得到了错误。

attributes->getName(); 'Request for member 'getName' in *attributes'; which is of non-class type 'attributes*''

我做了一些谷歌搜索,发现一些东西说使用格式访问指针指针地址

&(*attributes)->getName(); 'invalid uses of incomplete type 'struct attributes'

任何帮助将非常感激。 谢谢。

'invalid uses of incomplete type 'struct attributes'表示您需要#include头文件。 仅在代码中此刻才进行了声明。

如果不了解图书馆的更多信息,这很难说。 但是它可能会返回一系列项目:

attributes[0]->getName();    
attributes[1]->getName();

但是,关于我的猜测的可疑部分是,没有明显的方法可以知道有多少个项目。

首先考虑一下,如果函数返回了指向classAttributes变量的指针,该怎么办。 在这种情况下,您只需执行以下操作:

attributes->getName();

由于它是指向指针的指针,因此必须首先取消引用它,然后使用->运算符:

(*attributes)->getName();

如果这不起作用,则可能是由于函数未实现或继承引起的问题。

您可能想要的是classAttributes *。 由于您具有classAttribues **,因此您希望对其进行一次取消引用以获取classAttributes *。

(*attributes)

您可以从那里呼叫班级成员。

classAttributes **attributesArray = cPPClass->getAttributes();
classAttributes *attributesObject(*attributesArray);
attributesObject->getName();

从外观上看,您可能必须这样做(即不要使用“&”号):

(*attributes)->getName();

这是因为一旦取消引用它将为您提供一个指向结构的指针,然后您可以在该结构上使用->运算符。 当执行&(*attributes)时发生的事情是,您要取消引用指针,然后获取您拥有的对象的地址-实际上使它成为无操作对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM