float_t rotations[6] = {1.0f, 2.5f, 3.0f, 4.0f, 5.0f, 6.0f};
fla_algo_config_t config_alt = {20.0f,
20.0f,
{1.0f, 2.5f, 3.0f, 4.0f, 5.0f, 6.0f},
mock_error_callback,
nullptr};
fla_algo_config_t config = {20.0f,
20.0f,
rotations,
mock_error_callback,
nullptr};
config_alt有效。但是,每次我想将整个数组传递给该结构时,都要写出整个数组很麻烦。我只想直接传递rotations
数组,因此不需要重写。
但是,出现以下错误:
error: array must be initialized with a brace-enclosed initializer
nullptr};
我猜想它要用括号括住旋转。但是,如果这样做,我现在要传递一个数组数组,但是fla_algo_config_t
需要一个数组。
如何传递数组?我尝试传递* rotations,但这仅传递第一个值。
答案 0 :(得分:0)
怎么样
#define ROTATIONS {1.0f, 2.5f, 3.0f, 4.0f, 5.0f, 6.0f}
fla_algo_config_t config_alt = {20.0f,
20.0f,
ROTATIONS,
mock_error_callback,
nullptr};
如果您仍然需要rotations[]
,您仍然可以这样做
float_t rotations[6] = ROTATIONS;
如果要使用初始化列表,则必须 使用花括号。参见例如here。
因此,您不能仅传递rotations
,因为它不是初始化列表,而是数组。
如果您不喜欢#define
,可以选择另一种选择:
void initFlaAlgoConfig(fla_algo_config_t& config, float_t (&rotations)[6]) // FYI: The 6 should not be hard coded ;)
{
// or use memcpy()
for(int i = 0; i < 6; ++i)
{
config.thirdMember[i] = rotations[i];
}
}
然后它可以这样工作:
float_t rotations[6] = {1.0f, 2.5f, 3.0f, 4.0f, 5.0f, 6.0f};
fla_algo_config_t config = {20.0f,
20.0f,
{0}, // default, will be overwritten in initFlaAlgoConfig()
mock_error_callback,
nullptr};
initFlaAlgoConfig(config, rotations);
但是,这将花费您运行时间。