0

オブジェクトの内部方向を引数で指定された値に設定するメンバー関数を使用しています。

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配列引数が配列に変換される理由についての説明と、エラーを処理するための正しいアプローチを提案していただければ幸いです。

4

3 に答える 3