加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 04:54:32 所属栏目:百科 来源:网络整理
导读:是否可以在另一个类中定义一个私有类并将其用于数组?例如: class a{ public: private: class b; b myarray[10]; class b { public: b(int a):a_val (a){} private: int a_val; };}; 忽略公共,我的语法有什么问题吗? 是否也可以在A中创建成员函数来修改b的
是否可以在另一个类中定义一个私有类并将其用于数组?例如:
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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读