我的代码如下。
class A
{
enum kind { cpu, gpu };
A(int a)
{
value = a;
}
private:
int value;
};
class B
{
A a;
A b(A::cpu);
};
此代码将发生错误。我知道实例类A作为成员B是一个错误,但这提示使我感到困惑。
答案 0 :(得分:5)
两个问题:
kind
在A
中是私有的(它是一个类,默认情况下是私有的),因此需要首先将其声明为公共,才能在B
中使用它。b
的位置在类内部,在该类中声明了变量和方法。当您实际上要默认初始化对象时,编译器会认为您声明了一个函数。改用A b{A::cpu};
(花括号)。