[英]Array initialization, too many initializer values
我正在定义一个这样的成员变量:
float m_Colors[4];
在构造函数中,我想像这样初始化它:
m_Color = {0.0f, 0.0f, 0.0f, 1.0f};
即使我在这个特殊场合之前已经这样做了一百万次,我也会收到错误“太多初始化值”。 这两行非常简单的代码怎么可能有问题? 请启发我。
您不能使用初始化器语法再次重新初始化数组(在构造class
时它已经默认初始化)。
您可以在构造class
时使用使用ctor
initializer list
来初始化array
。
struct S
{
S( )
: floats_{ 1.0f, 2.2f, 3.3f, 4.4f }
{ }
private:
float floats_[ 4 ];
};
如果你想为内置数组使用初始化器,你必须在声明它的时候做。 否则,您可以在构造函数中像这样使用:
float tmp[] = { 0.0f, 0.0f, 0.0f, 1.0f };
memcpy_s(m_Colors, 4, tmp, 4);
您可以使用 std::array<...> 作为您的成员的数据类型。 通过这种方式,您可以使用花括号对其进行初始化,并在需要时以这种方式分配它,另外您还可以获得一些额外的现代 C++ 好处。
#include <array>
class Object
{
public:
Object() : m_Colors{0.0f, 0.0f, 0.0f, 1.0f}
{
}
private:
std::array<float, 4> m_Colors;
};
如果您需要重新分配:
void reinit()
{
m_Colors = {0.0f, 0.0f, 0.0f, 1.0f};
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.