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

use*_*262 -4 c++

我收到以下错误:

Conversion loses qualifiers
Run Code Online (Sandbox Code Playgroud)

尝试在没有代码重复的情况下实现索引运算符时(我将显示代码段):

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);
}
Run Code Online (Sandbox Code Playgroud)

但是,以下有效(这不使用辅助函数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];
}
Run Code Online (Sandbox Code Playgroud)

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

inf*_*ero 5

这是因为您constconst函数中调用了非函数。编译器警告您,您的const对象将不再存在const于临时函数中。