1

std::vector<float>与えられたを関数に渡してパラメーターの型を一致させるにはどうすればよいfloat (*parameter)[3]ですか?

この関数は、パラメーターに 3 次元の点の座標を入力します。これが、パラメーターの型が 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

std::allocator<T>が一部の構成に含まれていることを確認する方法がないため、がfloat[3]与えられたそのような配列を指すことはできませんstd::vector<T>。適切なキャスト、またはキャストする適切な値を見つけることは問題ではありません。

float[3]問題は、あなたが説明した関数のようなものは、実際のポインタまたはnullポインタにしか渡せないということです。

厳密に準拠できる唯一の方法は、データを善意のfloat[3]変数との間でコピーし、その変数へのポインターを関数に渡すことです。

于 2013-03-22T11:56:07.773 に答える