Как передать указатель на атрибут указателя класса как двойной указатель? - PullRequest
1 голос
/ 14 февраля 2012

Я не могу понять, как правильно передать этот двойной указатель .... ничего, что я пробовал, не работает ...

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); 
}

Ответы [ 3 ]

3 голосов
/ 14 февраля 2012

Есть несколько вопросов:

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?
}

И, наконец, вам нужно почтить myA один раз, прежде чем вы получите доступ к attribClass.

derp(&((*myA)->attribClass)); // what am i doing wrong?
1 голос
/ 14 февраля 2012

Вам нужна дополнительная разыменование для myA, которая имеет тип MyClass ** (не просто MyClass *):

derp(&(*myA)->attribClass);
1 голос
/ 14 февраля 2012

myA - это указатель на указатель, поэтому вам нужно разыменовать его, чтобы получить указатель, с которым вы можете использовать ->, поэтому:

derp(&(myA->attribClass));

Должно быть

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

Я предполагаю, что вам нужно изменить / установить значение указателя.Если это не так, вы, вероятно, не должны использовать двойной указатель здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...