假设我有一个带浮点数组的函数
void SetColor(float* color);
我想调用那个函数。通常我会这样做
float m_Color[4] = { 1.0f, 0.5f, 0.75f, 1.0f };
SetColor( m_Color );
有更简洁的方法吗?
我期待的东西 SetColor( { 1.0f, 0.5f, 0.75f, 1.0f } )
如果存在某种东西。
我不想更改参数类型,因为有时参数是硬编码的,但有时候是以编程方式设置的。
答案 0 :(得分:3)
void SetColor(std::initializer_list<float> l) {
DoSomething(l.begin(), l.end());
}
答案 1 :(得分:0)
没有数组文字这样的东西。如果可以,请SetColor()
获取std::array<float, N>
并传递该实例:
template <unsigned N>
void SetColor(std::array<float, N> color);
SetColor(std::array<float, 4>{{ 1.0f, 0.5f, 0.75f, 1.0f }});
如果您无法更改参数,std::array
有一个data()
成员函数,它返回指向其内部数组的指针:
SetColor(std::array<float, 4>{{ 1.0f, 0.5f, 0.75f, 1.0f }}.data());
答案 2 :(得分:0)
如果您将SetColor
的签名更改为以下之一,则可以执行此操作:
void SetColor(std::initializer_list<float> color);
void SetColor(const std::vector<float>& color);
void SetColor(const std::array<float, 4>& color);