gpt4 book ai didi

c++ - 在成员初始化列表中填充 std::array

转载 作者:可可西里 更新时间:2023-11-01 15:18:00 26 4
gpt4 key购买 nike

以下代码有效,但我想避免警告:

warning: 'fitness::vect_' should be initialized in the member initialization list [-Weffc++]

当使用 g++ -Weffc++ 开关编译时:

#include <array>

template<class T, unsigned N>
class fitness
{
public:
explicit fitness(T v)
{
static_assert(N, "fitness zero length");

vect_.fill(v);
}

private:
std::array<T, N> vect_;
};

int main()
{
fitness<double, 4> f(-1000.0);

return 0;
}

我应该忽略警告吗?有没有办法在构造函数初始化列表中填充 vect_(不改变其类型)?

最佳答案

我相信你可以忽略这个警告。

如果您在构造函数中为数组放置一个空的初始化,它会起作用:

#include <array>

template<class T, unsigned N>
class fitness
{
public:
explicit fitness(T v):
vect_{}
{
static_assert(N, "fitness zero length");

vect_.fill(v);
}

private:
std::array<T, N> vect_;
};

int main()
{
fitness<double, 4> f(-1000.0);

return 0;
}

关于c++ - 在成员初始化列表中填充 std::array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21993780/

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