错误传递Const为此

时间:2016-03-03 02:07:45

标签: c++ compiler-errors

我正在为一所学校的项目工作并有这个错误,但我无法弄清楚要解决它:

错误:将'const xArray'作为'size_t xArray :: PushBack(int)'的'this'参数传递'丢弃限定符[-fpermissive]   a.PushBack(温度);

以下是错误来自的函数:

    istream& operator>>(istream& in, const xArray& a)
    {
          int temp;
          in >> temp;
          a.PushBack(temp);

          return in;
    }

这是我的PushBack代码:

    size_t xArray::PushBack(int c)
    {

            if(len == arraySize)
            {
                     int* temp = new int[arraySize* 2];
                     size_t i;
                     for(i = 0; i < arraySize; i++)
                     {
                            temp[i] = data[i];
                     }
                     delete [] data;
                     data = temp;
                     data[len+1] = c;
                     len = len + 1;
            }
            else
            {
                  data[len + 1] = c;
                  len = len + 1;
            }
    }

任何有关如何修复或解释此错误的帮助将不胜感激 提前致谢

1 个答案:

答案 0 :(得分:1)

对于istream& operator>>(istream& in, const xArray& a)a被声明为const,并且在其上调用PushBack()将失败,因为xArray::PushBack()是非const成员函数。

您可以将a的参数类型更改为非const引用,例如

istream& operator>>(istream& in, xArray& a)
{
    ...
}