Когда я пытаюсь позвонить переехать член, передаваемый по ссылке, компилятор выдает ошибку, но когда я переопределяю функцию-член для передачи по значению, она работает.
Могу ли я не использовать передачу по ссылке в качестве значения в моей функции-члене?
#include <iostream>
#include <string>
class Screen{
private:
std::string contents;
using position = std::string::size_type;
position height,width,cursor_position;
public:
Screen() = default;
Screen& move(position&,position&); // Pass by reference
};
Screen& Screen::move(position& row,position& col)
{
(*this).cursor_position = (row * width) + col;
return *this;
}
int main() {
Screen myScreen;
myScreen.move(4,0); // This line gives a compile error
}
Нет, rvalue нельзя передать как неконстантную ссылку на lvalue. Это может быть передано как ссылка const lvalue, потому что компилятор создаст временную переменную для указания lvalue.
int main() {
Screen myScreen;
position rowTmp = 4;
position colTmp = 0;
myScreen.move(rowTmp,colTmp);
}
Попытайся!
Вам нужно создать две реальные переменные для «Pass by refrrence».