C ++ - 转换失去限定符错误

时间:2017-11-21 09:49:18

标签: c++

我收到以下错误:

Conversion loses qualifiers

当试图在没有代码重复的情况下实现索引操作符时(我将显示代码段):

Point* BufferedList::indexTemp(size_t idx)
{
    if (idx >= size) return nullptr;

    return &arr[idx];
}

const Point* BufferedList::operator [](size_t idx) const
{
    return indexTemp(idx);
}
Point* BufferedList::operator [](size_t idx)
{
    return indexTemp(idx);
}

但是,以下工作(这不使用辅助函数indexTemp,它是代码的重复):

const Point* BufferedList::operator [](size_t idx) const
{
    if (idx >= size) return nullptr;

    return &arr[idx];
}
Point* BufferedList::operator [](size_t idx)
{
    if (idx >= size) return nullptr;

    return &arr[idx];
}

我真的需要两个索引函数(一个返回Point*而另一个返回const Point*)?

1 个答案:

答案 0 :(得分:1)

这是因为您从tf.einsum('ijk,kl->ijl', x, w) 函数调用了非const函数。编译器警告您,const对象在临时函数中不再是const