“”中没有名为“”的类型

时间:2019-03-25 10:51:25

标签: c++ xcode clang

我的代码如下。

class A
{
    enum kind { cpu, gpu };

    A(int a)
    {
        value = a;
    }

private:
    int value;
};

class B 
{
    A a;
    A b(A::cpu);
};

此代码将发生错误。我知道实例类A作为成员B是一个错误,但这提示使我感到困惑。

enter image description here

面对,这与私人无关: enter image description here

1 个答案:

答案 0 :(得分:5)

两个问题:

  • kindA中是私有的(它是一个类,默认情况下是私有的),因此需要首先将其声明为公共,才能在B中使用它。
  • 声明b的位置在类内部,在该类中声明了变量和方法。当您实际上要默认初始化对象时,编译器会认为您声明了一个函数。改用A b{A::cpu};(花括号)。