【问题标题】:How do I initialize an array of a non-built-in type in a c++ constructor initializer list?如何在 c++ 构造函数初始化程序列表中初始化非内置类型的数组?
【发布时间】:2017-12-07 22:27:20
【问题描述】:

在 C++ 中,我试图在构造函数初始化程序列表中初始化一个非内置类型的数组。从代码开始:

class bar {
  int i1,i2;
public:
  bar(i1,i2);
}
class foo {
  bar bar1,bar2;
public:
  foo(int a, int b, int c, int d) : bar1(a,b),bar2(c,d) {};
}

我想用数组替换 bar1 和 bar2:

bar allbars[2];

如何更改初始化列表以初始化所有栏?

【问题讨论】:

  • 为什么不显示您尝试过的内容和遇到的错误?
  • bar(i1,i2); - 甚至无法编译。
  • foo(int a, int b, int c, int d) : allbars{ bar(a,b), bar(c,d) } {};

标签: c++ arrays constructor initializer-list


【解决方案1】:

首先为bar 创建一个合适的构造函数。

class bar {
  int i1,i2;
public:
  bar(int one, int two)
  : i1(one)
  , i2(two)
  {};
};

class foo {
  bar allbars[2];
public:
  foo(int a, int b, int c, int d)
  : allbars{ bar(a,b), bar(c,d) }
  {};
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    相关资源
    最近更新 更多