如何将指向类的指针属性的指针作为双指针传递?

How to pass a pointer to class's pointer attribute as a double pointer?

本文关键字:指针 属性      更新时间:2023-10-16

我不知道如何正确地传递这个双指针。。。。我试过的都不管用。。。

class myClass{
    MyClass *attribClass;
}
void derp(MyClass **myA) {
    // recursively calls down classes....
    derp(&(myA->attribClass)); // what am i doing wrong?
}
int main() {
    MyClass *myClass = new MyClass;
    myClass.attribClass = *whatever code to initialize a long linked list of MyClass's*;
    derp(&myClass); 
}

有几个问题:

class MyClass {  //  Change to "MyClass".
public:   //  Need to make it public or it can't be accessed by "derp()"
          //  Did you intend "derp()" to be a class member?
    MyClass *attribClass;
}; //  missing semicolon
void derp(MyClass **myA) {
    // recursively calls down classes....
    derp(&((*myA)->attribClass)); // what am i doing wrong?
}

在最后一个例子中,在访问attribClass之前,您需要尊重myA一次。

derp(&((*myA)->attribClass)); // what am i doing wrong?

myA是一个指向指针的指针,因此您需要取消引用它来获得一个可以与之一起使用->的指针,所以:

derp(&(myA->attribClass));

应该是

derp(&((*myA)->attribClass));

我假设您需要更改/设置指针的值。如果你不是,你可能不应该在这里使用双指针。

您需要对myA进行额外的取消引用,它的类型为MyClass **(而不仅仅是MyClass *):

derp(&(*myA)->attribClass);