c++ - 为什么数组参数被视为 const 数组?

标签 c++ arrays arguments constants

我正在使用一个成员函数,它只是将对象的内部方向设置为参数中给定的值:

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/

相关文章:

c++ - 在 cmake 中使用 boost::json 静态库

java - 从子数组创建列表而不在java中复制

arrays - 如何对末尾带有零的整数数组进行排序?

python - 从文件中将数字解析为两个二维数组

Javascript - 创建对象并作为参数传递的正确方法

c++ - 如何管理 C++ 库的创建

c++ - 通过套接字发送 BYTE*

c - 将参数从 bash 传递到 C

php - 重用 Sprintf 参数或 PHP 中的替代方案

C++ 程序报告找不到符号错误