是否可以在另一个类中定义一个私有类并将其用于数组?例如:
class a
{
public:
private:
class b;
b myarray[10];
class b
{
public:
b(int a):a_val (a){}
private:
int a_val;
};
};
Run Code Online (Sandbox Code Playgroud)
忽略公共,我的语法有什么问题吗?
是否也可以在A中创建成员函数来修改b的私有值.例如,myarray [0] .a_val = 5; 如果是这样,这个语法也是正确的吗?
不,您定义私有嵌套类的语法是正确的.虽然其他一些问题是错误的:您需要b
在创建数组之前定义它.类型需要完整.
b
不是默认构造的,所以你还需要在a
构造函数初始化列表中初始化数组,这在C++ 03中实际上是不可能的.C++ 11提供了初始化列表来获得该功能.
只需使用std::vector
或std::array
.
固定版本的代码:
class a
{
public:
// ATTN C++11 feature here
a() : myarray({ 1, 2}) {}
private:
class b {
public:
b(int a) : a_val (a){}
int a_val;
};
b myarray[2];
};
int main ()
{
a a;
}
Run Code Online (Sandbox Code Playgroud)