2013-03-17 218 views
0

將這項工作:是否有可能有一個指針指向第一個指針所指向的變量的指針?

Class MyClass{ 

public: 
    void Foo(); 

private: 
    MyClass** ppMyClass; 

}; 

MyClass* pMyClass = new MyClass; 

ppMyClass = &pMyClass; 

delete pMyClass; 

ppMyClass-> Foo(); 

如果是行不通的,這將是分配一個指針的指針,並用它太接入功能,它所指向的類的正確方法?事情是,我想知道是否有內存泄漏導致的錯誤:Why do I get the WSAENOTSOCK error in this code?

所以,這會工作嗎?

+2

不,'ppMyClass-> Foo();'不能作爲'ppMyClass'是'MyClass **'而不是'MyClass *'。 – us2012 2013-03-17 18:18:24

+1

此外,'* ppMyClass'是'delete'後的一個懸掛指針... – Synxis 2013-03-17 18:19:48

+0

任何人都有一個想法,爲什麼鏈接中的代碼將無法工作呢?至少,你是否在上面的鏈接的代碼中看到內存泄漏? – 2013-03-17 18:23:39

回答

2

不,ppMyClass->Foo();不能作爲ppMyClassMyClass**而不是MyClass*

理論上你可以做(*ppMyClass)->Foo(),雖然在你的特定的代碼片段中,這將是不確定的行爲,因爲你剛纔的delete d pMyClass

相關問題