在C++

问题描述:

使用私有类时,没有在此范围内误差宣布我有一类在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

您在使用内部类声明它

之前修复:

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

    std::list <myInnerClass> mylists; 

您使用myInnerClass声明之前。

这段代码可以编译:

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

首先必须声明的内部类,然后你可以用它

您的代码

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