您好我在我的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'
非常感谢任何帮助。 感谢。
答案 0 :(得分:2)
'invalid uses of incomplete type 'struct attributes'
表示您需要#include
头文件。它只在代码中向前声明。
答案 1 :(得分:1)
在不了解图书馆的情况下,很难说。但它可能会返回一系列项目:
attributes[0]->getName();
attributes[1]->getName();
关于我猜测的可疑部分是,没有明显的方法可以知道有多少项目。
答案 2 :(得分:1)
首先考虑如果函数返回指向classAttributes变量的指针,您会怎么做。在这种情况下,您只需执行以下操作:
attributes->getName();
由于它是指向指针的指针,因此必须首先取消引用它,然后使用->
运算符:
(*attributes)->getName();
如果这不起作用,则可能是由未执行的功能或继承引起的问题。
答案 3 :(得分:1)
你可能想要的是classAttributes *。由于您有classAttribues **,因此您希望取消引用一次以获取classAttributes *。
(*attributes)
从那里你可以打电话给班上的成员。
classAttributes **attributesArray = cPPClass->getAttributes();
classAttributes *attributesObject(*attributesArray);
attributesObject->getName();
答案 4 :(得分:0)
从它的外观来看,你可能不得不这样做(即没有&符号):
(*attributes)->getName();
这是因为解除引用一次将为您提供指向结构的指针,然后您可以使用->
运算符。当你执行&(*attributes)
时发生的事情是你取消引用指针,然后获取你拥有的对象的地址 - 实际上使它成为无操作。