在C ++中访问指针到指针

时间:2010-09-29 22:55:07

标签: c++ pointers function-pointers

您好我在我的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'

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

5 个答案:

答案 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)时发生的事情是你取消引用指针,然后获取你拥有的对象的地址 - 实际上使它成为无操作。