在C++

2017-09-20 28 views
1

使用私有類時,沒有在此範圍內誤差宣佈我有一類在C++

class myClass 
{ 
    private: 

     std::list <myInnerClass> mylists; 

     class myInnerClass 
     { 
      // Design for this private class 
     } 
} 

我不明白爲什麼行std::list <myInnerClass> mylists給了我以下錯誤:

- Type 'myInnerClass' was not declared in this scope 
    - Type 'myInnerClass' could not be resolved 

我錯在哪裏?

+4

'myInnerClass'不存在當你聲明'std :: list mylists;'時。一般來說,在使用它們之前,你需要聲明一些東西。 – nwp

+0

因爲編譯到達'std :: list mylists;'行時還沒有被聲明?在這個變量的聲明之上移動'myInnerClass'的聲明。 –

+0

在我的私人類的定義解決了問題後定義我的列表。謝謝,我認爲在這種情況下,這個職位非常有益。 – user2896152

回答

4

您在使用內部類聲明它

之前修復:

class myInnerClass 
    { 
     // Design for this private class 
    }; 

    std::list <myInnerClass> mylists; 
5

您使用myInnerClass聲明之前。

這段代碼可以編譯:

class myClass 
{ 
    private: 
     class myInnerClass 
     { 
      // Design for this private class 
     } 
     std::list <myInnerClass> mylists; 
} 
0

首先必須聲明的內部類,然後你可以用它

您的代碼

class myClass 
{ 
private: 
    std::list <myInnerClass> mylists; 
    class myInnerClass 
    { 
     // Design for this private class 
    } 
} 

正確的代碼:

class myClass 
{ 
    private: 
    class myInnerClass 
     { 
      // Design for this private class 
     } 
      std::list <myInnerClass> mylists; 
    } 
+1

第三次重複相同的答案有什麼意義?前兩次發佈後幾分鐘 – StoryTeller