2012-02-14 12 views
1

私が正しく、この二重のポインタを渡す方法を見つけ出すカント....私は作品を試してみた何も...クラスのポインタ属性へのポインタをダブルポインタとして渡すにはどうすればよいですか?

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

あなたは何をしようとしていますか? –

+0

何をしようとしていますか?あなたはあなたの問題の不可能な半分を解決しようとしていますか?(http://blogs.msdn.com/b/oldnewthing/archive/2007/10/30/5773153.aspx)? –

+0

バイナリ検索ツリー挿入メソッドを不正なCスタイルでビルドするC++:/ – kbirk

答えて

3

いくつかの問題があります:

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? 
+0

また、変数の型が不正で、 'MyClass'ではなく 'MyClass'であることに注意してください。 –

+0

OMG ...どうしましたか?ナイスキャッチ! – Mysticial

1

myAは、ポインタへのポインタですので、あなたが得るためにそれを間接参照する必要がありますあなたが->を使用することができますポインタ、そう:

derp(&(myA->attribClass)); 

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

にする必要があり、私はあなたがPOINの値を設定/変更する必要があると仮定していますter。もしあなたがおそらく二重ポインタをここで使用すべきではないでしょう。

1

あなたがタイプMyClass **(ない単にMyClass *)であるmyAに余分な間接参照が必要です:

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