Я не уверен, что вы пытаетесь достичь, но вы могли бы обеспечить две перегрузки GetNodeReference
:
Node& GetNodeReference(std::size_t Index)
{
// ...
return NodeReference;
}
const Node& GetNodeReference(std::size_t Index) const
{
// ...
return NodeReference;
}
Обратите внимание, что вторая перегрузка имеет два модификатора const
, один в начале строки для возвращаемого типа и один в конце строки для неявно переданного *this
объекта.
Чтобы избежать повторения кода, вы можете реализовать неконстантную перегрузку на основе константной перегрузки:
const Node& GetNodeReference(std::size_t Index) const
{
// ...
return NodeReference;
}
Node& GetNodeReference(std::size_t Index)
{
return const_cast<Node&>(static_cast<const LinkedList&>(*this).getNodeReference(Index));
}
Эта техника обсуждается в пункте 3 Эффективный C ++ Скоттом Мейерсом.