在这个例子中,我想将指针指向未来,尚未分配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
答案 0 :(得分: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
}
答案 1 :(得分:0)
如果要将引用或指针传递给指针并稍后更改它,则传递的内容必须具有内存位置。
您可以执行SomeClass** ppSomeObject = new SomeClass*;
之类的操作,稍后删除指针(最后)。
话虽如此,通常有更好的方法来做事并正确使用RAII