У меня есть два члена геттера:
Node* prev() { return prev_; }
int value() { return value_ }
Обратите внимание на отсутствие константных идентификаторов (я их забыл, но теперь хочу знать, почему это не сработает). Я пытаюсь заставить это скомпилировать:
Node(Node const& other) : prev_(other.prev()), value_(other.value()) { }
Компилятор отвергает это. Я думал, что С++ допускает преобразование неконстантных в константные параметры функции, например:
{
Foo(int bar);
}
Foo(const int bar)
{
//lala
}
Почему это не позволяет мне сделать то же самое с конструктором копирования? Константный идентификатор означает, что я обещаю ничего не менять, так какая разница, получу ли я свое значение из константного или неконстантного источника?