是否可以在另一个类中定义一个私有类并将其用于数组?例如:
class a { public: private: class b; b myarray[10]; class b { public: b(int a):a_val (a){} private: int a_val; }; };
忽略公共,我的语法有什么问题吗?
是否也可以在A中创建成员函数来修改b的私有值.例如,myarray [0] .a_val = 5;如果是这样,这个语法也是正确的吗?
解决方法
不,您定义私有嵌套类的语法是正确的.虽然其他一些问题是错误的:您需要在创建数组之前定义b.类型需要完整.
b不是默认可构造的,因此您还需要在构造函数初始化列表中初始化该数组,这在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; }