1

如何将给定std::vector<float>的参数传递给函数以匹配参数类型float (*parameter)[3]

该函数用 3d 点的坐标填充参数,这就是参数类型为 3 元素长数组的数组的原因。该功能由提供,我无法更改。

我已经初始化了向量以覆盖足够的元素。

4

2 回答 2

4
void f(float (*parameter)[3])
{
}

int main()
{
    vector<float> v(3);
    f(reinterpret_cast<float(*)[3]>(&v[0]));
}
于 2013-03-22T11:30:09.870 回答
2

因为无法确定 anstd::allocator<T>涉及某个配置 a float[3],所以不可能在给定 a 的情况下指向这样的数组std::vector<T>。这不是找到正确的演员表或正确的演员表值的问题。

问题是,像您描述的函数之类的东西只能传递一个指向实际的指针float[3]或空指针。

您可以做的唯一严格符合的事情是将数据复制到真正的变量中或从真正的float[3]变量中复制出来,并将指向它的指针传递给您的函数。

于 2013-03-22T11:56:07.773 回答