gpt4 book ai didi

c++ - 错误 : could not convert '()' from '' to 'struct'

转载 作者:行者123 更新时间:2023-11-30 02:16:09 30 4
gpt4 key购买 nike

template <typename T, unsigned int S>
class Vec
{
T data[S];

public:
constexpr Vec(const T& s)
: data{s} {}
};

template <typename T, unsigned int Rows, unsigned int Cols>
class Mat
{
Vec<T, Cols> data[Rows];

public:
constexpr Mat(const T& s)
: data{Vec<T, Cols>(s)} {}
};

int main()
{
constexpr Mat<double, 2, 2> m{1.0};
return 0;
}

此代码给我以下错误:

source/main.cpp:24:25: error: could not convert '<brace-enclosed initializer list>()' from '<brace-enclosed initializer list>' to 'Vec<double, 2>'
: data{Vec<T, Cols>(s)} {}
^

谁能告诉我这个错误是什么意思,我该如何解决?我以前从未遇到过这个错误。我使用 GNU Arm Embedded Toolchain 8.2.1 和 g++ -std=c++17 -O3 作为参数。

最佳答案

Rows 是 2. 所以

的大小
Vec<T, Cols> data[Rows];

data 为 2。但是 data 数组仅由一项初始化:

: data{Vec<T, Cols>(s)} {} 
// initializer has only one element

因为您通过

提供了用户定义的构造函数
constexpr Vec(const T& s)
: data{s} {}

删除了Vec的默认构造函数,无法构造data中的第二项。添加默认构造函数:

constexpr Vec()
:data {} {}

关于c++ - 错误 : could not convert '<brace-enclosed initializer list>()' from '<brace-enclosed initializer list>' to 'struct' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55259750/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com