如何在C中的另一个类’private中定义一个类

前端之家收集整理的这篇文章主要介绍了如何在C中的另一个类’private中定义一个类前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以在另一个类中定义一个私有类并将其用于数组?例如:
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;
}
原文链接:https://www.f2er.com/c/120056.html

猜你在找的C&C++相关文章