オブジェクトの内部方向を引数で指定された値に設定するメンバー関数を使用しています。
void A::SetOrientation(float a[3]);
別のクラスには、次のものがあります。
class B
{
public:
RestoreStateTo(A* const o_pA) const
private:
float d_orientation[3];
};
void
B::RestoreStateTo(A* const o_pA) const
{
o_pA->SetOrientation(d_orientation);
}
次のコンパイラ エラーが発生します (Visual Studio 2010 の場合)。
error C2664: 'void A::SetOrientation(float [])' : cannot convert parameter 1 from 'const float [3]' to 'float []'
で問題を回避できることがわかりましたがo_pA->SetOrientation(const_cast<float *>(d_orientation));
、何が起こっているのかをよりよく理解したいと思います。
const
配列引数が配列に変換される理由についての説明と、エラーを処理するための正しいアプローチを提案していただければ幸いです。