0

在这个例子中,我想将一个指向未来的指针传递给尚未分配someObject给函数的指针。(请不要问为什么。)

int main(void) {
    functionThatNeedsSomeObject();

    SomeClass someObject(0);
}

我正在尝试使用指向指针的指针来做到这一点。这是我的尝试:

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

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

但是在我的代码中,ppSomeObject它在传递时是未初始化的。当然第二层指针不能指向对象,但是我怎样才能让第一层指针指向某个我以后可以改变的地方,什么时候someObject创建呢?

我应该做这样的事情吗?即使它有效,创建中间指针也感觉没有必要。

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 回答
0

如果您想传递引用或指向指针的指针并在以后更改它,则传递的事物必须具有内存位置。

您可以SomeClass** ppSomeObject = new SomeClass*;稍后(最后)执行类似操作并删除指针。话虽如此,通常有更好的方法来做事并正确使用 RAII

于 2013-09-19T14:39:06.190 回答