У меня есть два члена геттер:Почему C++ не допускает const-const преобразование в copy ctor?
Node* prev() { return prev_; }
int value() { return value_ }
Пожалуйста, обратите внимание на отсутствие константных идентификаторов (я их забыл, но теперь я хочу знать, почему это не будет работать). Я пытаюсь его скомпилировать:
Node(Node const& other) : prev_(other.prev()), value_(other.value()) { }
Компилятор отклоняет это. Я думал, что C++ позволяет неконстантный к сопзЬ преобразованию в параметрах функции, такие как:
{
Foo(int bar);
}
Foo(const int bar)
{
//lala
}
Почему не он позволил мне сделать то же самое с конструктором копирования? Идентификатор const означает, что я обещаю ничего не менять, так почему это имеет значение, если я получу свое значение из источника const или non-const?
Стоит ли столбце const после круглых скобок моей копии ctor, что они НЕ МОГУТ мутировать данные других? – jkeys
Дело не в конструкторе, а в аксессорах, которые не являются константами, поэтому нельзя вызвать объект const. – Javier
Итак, мой компилятор просто параноик. Даже если мои помощники не мутируют данные, конструктор копирования этого не знает? – jkeys