Я пишу реализацию интеллектуального указателя в C ++, и у меня возникли некоторые проблемы с правильностью const. Ниже приводится выдержка из кода:
template <class T> class Pointer {
T* pointee;
public:
Pointer(const Pointer<T>& other) { // must be const Pointer& for assignments
pointee = other.getPointee();
}
T* getPointee() const {
return pointee;
}
};
Это один из способов сделать это, однако мне неловко, что член const
не возвращает указатель const
. Другой возможностью было бы позволить getPointee()
вернуть const T*
и выполнить const_cast<T*>
в конструкторе копирования.
Есть ли лучший способ сделать это? Если нет, что, по вашему мнению, является меньшим злом, возвращение неконстантного или совершение const_cast
?