我正在使用一个成员函数,它只是将对象的内部方向设置为参数中给定的值:
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
数组以及建议处理错误的正确方法?
最佳答案
因为你的函数原型(prototype) void B::RestoreStateTo(A* const o_pA) const 说你不会修改 B 的任何成员。 由于d_orientation是B的一个属性,所以在这个函数中是const。
关于c++ - 为什么数组参数被视为 const 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17935339/