0

この例では、関数にまだ割り当てられていない未来へのポインタ ポインタを渡したいと思いsomeObjectます。(理由は聞かないでください。)

int main(void) {
    functionThatNeedsSomeObject();

    SomeClass someObject(0);
}

ポインターへのポインターを使用してそれを実行しようとしています。これは私の試みです:

int main(void) {
    SomeClass** ppSomeObject;
    functionThatNeedsSomeObject( ppSomeObject);

    SomeClass someObject(0);
    *ppSomeObject = &someObject;
}

しかし、私のコードでppSomeObjectは、渡されたときに初期化されていません。もちろん、第 2 層のポインターはオブジェクトを指すことはできませんが、someObject作成時に後で変更できる場所を第 1 層のポインターに指すようにするにはどうすればよいでしょうか?

私はこのようなことをすべきですか?機能したとしても、中間ポインターを作成する必要はないように感じます。

SomeClass* pSomeObject = 0;
SomeClass** ppSomeObject = &pSomeObject
4

2 に答える 2

1

参照によってポインタを渡すことができます:

void functionThatNeedsSomeObject(SomeObject*& rpObject)
{
    // do stuff
}

int main()
{
    SomeObject* pSomeObject = NULL;
    functionThatNeedsSomeObject(pSomeObject);
    SomeObject someObject(0);
    pSomeObject = &someObject;
    // NOTE:  when the function ends, someObject is destroyed, so the pointer is dangling
}
于 2013-09-19T14:38:42.763 に答える