'初始化':无法从'Array <int,3>'转换为'int'

代代

考虑以下代码:

#include <cstddef> //for std::size_t

template<class T, std::size_t Size>
class Array
{
private:
    T _data[Size];
public:
    template<class... Args>
    Array(Args&&... vals)
        : _data{ vals... }
    {}
};

int main()
{
    Array<int, 3> a = { 1, 2, 3 };
    Array<int, 3> b = { 4, 5, 6 };

    Array<Array<int, 3>, 2> arr = { a, b };
}

一切对类的前两个对象(ab)均起作用

然后,我声明一个数组数组(如果需要,则为2D数组)。因此,当Array<Array<int, 3>, 2> arr;执行的构造函数时,我相信template参数T将等于Array<int, 3>这样,我们应该能够成功地提供Args&&...其他相同类型的对象。然后参数包将扩展。

因此Array<Array<int, 3>, 2> arr;,本质上应该有一个私有成员:

Array<int, 3> _data[2];

显然不是,因为出现标题中的错误。

别墅

我不太理解该编译错误消息,但是显然提供了一个复制构造函数可以解决该问题。

我认为,因为您没有提供复制构造函数,所以它尝试使用vals ...来直接初始化类成员,然后尝试在Array内部分配一个int[]

不提供复制构造函数并尝试通过复制进行任何构造都会导致相同的错误消息:

Array<int, 3> a = { 1, 2, 3 };
Array<int, 3> c = a;

main.cpp:17:26:错误:初始化时无法将“数组”转换为“整数”:_data {vals ...}

所以我的猜测是,这个奇怪的错误消息传播到您的列表初始化,因为它还使用了复制构造函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Scala中Array [BigInt]与Array [Int]的初始化

来自分类Dev

编译器错误C4244:“正在初始化”:从“ __int64”转换为“ int”,可能丢失数据

来自分类Dev

Swift错误:(int)无法转换为int

来自分类Dev

在Python中使用Python .Net初始化Array [int]

来自分类Dev

Cython无法转换为int?

来自分类Dev

无法将int {Class} :: *转换为int *

来自分类Dev

无法从<括号包围的初始化程序列表>转换为int(*)数组

来自分类Dev

范围内的枚举:错误:初始化时无法将'int'转换为'Handle'

来自分类Dev

错误:无法使用初始化程序列表初始化非聚合类型“ vector <int>”

来自分类Dev

从MutableList <Int>初始化Array <Int>

来自分类Dev

错误:无法使用初始化程序列表初始化非聚合类型的vector <int>

来自分类Dev

为什么不能使用嵌套的初始化程序列表初始化std :: array <std :: pair <int,int>,3>,但是std :: vector <std :: pair <int,int >>可以初始化?

来自分类Dev

无法从int转换为int **

来自分类Dev

无法从int转换为int **

来自分类Dev

Scala中Array [BigInt]与Array [Int]的初始化

来自分类Dev

无法将(int *)转换为int

来自分类Dev

无法从Object转换为Int

来自分类Dev

错误无法初始化右值类型为'int'的类型为'int *'的参数

来自分类Dev

无法从int转换为byte

来自分类Dev

无法将int {Class} :: *转换为int *

来自分类Dev

无法从<括号包围的初始化程序列表>转换为int(*)数组

来自分类Dev

无法将std :: array转换为int?

来自分类Dev

范围内的枚举:错误:初始化时无法将'int'转换为'Handle'

来自分类Dev

double [] []无法转换为int [] []

来自分类Dev

无法在python DataFrame/Array中将float转换为int

来自分类Dev

无法将“Int”类型的值转换为预期的参数类型“[CChar]”(又名“Array<Int8>”)

来自分类Dev

类 SQLite3Result 的对象无法转换为 int

来自分类Dev

'Array<Element>' 不能转换为 'Array<Int>'

来自分类Dev

错误 - “正在初始化”:无法从“glm::vec2”转换为“glm::vec3”

Related 相关文章

  1. 1

    Scala中Array [BigInt]与Array [Int]的初始化

  2. 2

    编译器错误C4244:“正在初始化”:从“ __int64”转换为“ int”,可能丢失数据

  3. 3

    Swift错误:(int)无法转换为int

  4. 4

    在Python中使用Python .Net初始化Array [int]

  5. 5

    Cython无法转换为int?

  6. 6

    无法将int {Class} :: *转换为int *

  7. 7

    无法从<括号包围的初始化程序列表>转换为int(*)数组

  8. 8

    范围内的枚举:错误:初始化时无法将'int'转换为'Handle'

  9. 9

    错误:无法使用初始化程序列表初始化非聚合类型“ vector <int>”

  10. 10

    从MutableList <Int>初始化Array <Int>

  11. 11

    错误:无法使用初始化程序列表初始化非聚合类型的vector <int>

  12. 12

    为什么不能使用嵌套的初始化程序列表初始化std :: array <std :: pair <int,int>,3>,但是std :: vector <std :: pair <int,int >>可以初始化?

  13. 13

    无法从int转换为int **

  14. 14

    无法从int转换为int **

  15. 15

    Scala中Array [BigInt]与Array [Int]的初始化

  16. 16

    无法将(int *)转换为int

  17. 17

    无法从Object转换为Int

  18. 18

    错误无法初始化右值类型为'int'的类型为'int *'的参数

  19. 19

    无法从int转换为byte

  20. 20

    无法将int {Class} :: *转换为int *

  21. 21

    无法从<括号包围的初始化程序列表>转换为int(*)数组

  22. 22

    无法将std :: array转换为int?

  23. 23

    范围内的枚举:错误:初始化时无法将'int'转换为'Handle'

  24. 24

    double [] []无法转换为int [] []

  25. 25

    无法在python DataFrame/Array中将float转换为int

  26. 26

    无法将“Int”类型的值转换为预期的参数类型“[CChar]”(又名“Array<Int8>”)

  27. 27

    类 SQLite3Result 的对象无法转换为 int

  28. 28

    'Array<Element>' 不能转换为 'Array<Int>'

  29. 29

    错误 - “正在初始化”:无法从“glm::vec2”转换为“glm::vec3”

热门标签

归档