我正在使用一个成员函数,它只是将对象的内部方向设置为参数中给出的值:
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
数组,并提出处理错误的正确方法?