【问题标题】:Was not declared in this scope error when using private class in C++在 C++ 中使用私有类时未在此范围错误中声明
【发布时间】:2018-03-01 13:08:39
【问题描述】:

我有课

class myClass
{
    private:

       std::list <myInnerClass> mylists;

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

我不明白为什么std::list &lt;myInnerClass&gt; mylists 行给了我以下错误:

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

我哪里错了?

【问题讨论】:

  • myInnerClass 在您声明 std::list &lt;myInnerClass&gt; mylists; 时不存在。通常,您需要先声明事物,然后才能使用它们。
  • 因为它还没有被声明,当编译到达std::list &lt;myInnerClass&gt; mylists; 行时?将myInnerClass 的声明移到此类变量的声明之上。
  • 在我的私有类的定义解决了问题之后再定义我的列表。谢谢,我认为这个职位在这种情况下是无关紧要的。
  • 它仅与成员变量和函数“无关”。这是 C++ IMO 的一个令人讨厌的边缘。
  • 颠倒myinnerclass的顺序,使其在std::list &lt;myInnerClass&gt; mylists;之前,不要忘记分号。

标签: c++ oop private


【解决方案1】:

在声明之前使用myInnerClass

此代码将编译:

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

【讨论】:

    【解决方案2】:

    在声明它之前你正在使用你的内部类

    修复:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      相关资源
      最近更新 更多