2015-11-11 63 views
0

在C++中,給定一個嵌套類,內部類可以有一個指向外部類的成員指針?嵌套類可以有一個指向外部類的成員指針嗎?

class Outer{ 
public: 
    class Inner{ 
    public: 
     int i; 
     Outer *ptr; 

     Inner(){ 
      i =0; 
      ptr = NULL; 
      .... 
     } 
     ... 

    }; 
} 

如果可以,有什麼/棘手的問題應該小心謹慎?

+1

如果你正在拍攝的「它只是工作」,那麼它應該是罰款。如果你想做的是正確的方式,那麼請考慮單一責任,DI原則 – Nandu

+0

這只是一個普通的課程。唯一「棘手」的事情是記住'Outer'外的名字是'Outer :: Inner'。 – molbdnilo

回答

2

您可以聲明一個指向外部類的指針或引用,因爲它不需要完整的類型。聲明一個對象會改爲要求類型完整。查看incomplete types

參考這是相同的原因,你可以有一個指向同一類的數據成員:

class Outer 
{ 
    Outer* p; // Outer is an incomplete type at this point 
}; 
+0

的確很好 – victor

1

沒關係,沒有問題。 我能想到的一件事可能會讓你感到意外的是,在C++中,內部類沒有隱式引用外部類的實例。但是,我不認爲,因爲你正在使用指針,這對你來說會是一個問題。

相關問題