[英]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.