c++ - C++ - 将声明的数组作为参数传递给结构
问题描述
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,但这只传递了第一个值。
解决方案
怎么样
#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;
如果要使用初始化列表,则必须使用花括号。参见例如这里。因此,您不能只传递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);
但是,这将花费您的运行时间。
推荐阅读
- pine-script - Tradingview : Pinescript - 创建 2 系列的 UNION 并隔离系列的最后一个元素
- c - Malloc 错误 - 无法分配给可变大小的对象
- django - django-static-precompiler 抛出错误,没有消息
- audio - alsamixer 中的奇怪状态发生了变化
- java - 为什么我在 java 中的基本堆栈代码没有运行?
- wpf - 如何让类库中的 generic.xaml 仅与 TargetType 一起使用?
- java - 如何使用 mockito 为这种方法算法编写一个 junit?
- vue.js - 数组中的数据不出现?
- python - 删除不满足特定要求的元素
- python - 如何在 sound_classification_ml_production 中正确生成 .npy 特征?