2013-03-17 172 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

相关问题