Рейтинг:
0
Christian Graus
Этот код не должен выдавать ошибку. Если вы передадите по ссылке, то x будет увеличен в вызывающем коде. Если вы изменили его и получили ошибку, дайте нам новый код и ошибку, если вы застряли
Rahul@puna
Конкретной ошибки как таковой не было. Я делал эту вещь на портале интервью , и их после проверки со ссылкой, он компилируется нормально, но дает некоторую ошибку здравомыслия. это я и пытаюсь выяснить. чего здесь может не хватать.
Christian Graus
Это ничего не даст. Он увеличивает локальную переменную и возвращает значение. Если вы сделаете его ref, то он будет проходить по ссылке и увеличивать переменную в вызывающем коде
Вы также можете передать указатель и получить тот же результат. Однако вам придется разыменовать указатель, чтобы увеличить его.
Rahul@puna
Да на самом деле я обновил код. Ниже следует то, что я обновил, но все равно это давало ошибку проверки здравомыслия.
void increment(int& x)
{
икс++;
вернуть;
}
Christian Graus
Что такое "ошибка проверки вменяемости"?
Rahul@puna
не уверен, что это в их инструменте. Возможно, они делают некоторую проверку функции, а затем дают результат на основе этого. Мне нужно выяснить, что может быть не так с этой функцией в любом случае.
Christian Graus
Ничего. Он делает именно то, что они просили. Оператор return является излишним, вы можете удалить его. Это единственное улучшение, которое я вижу
Rahul@puna
да, это может быть.
Christian Graus
Если они написали инструмент, ошибка в инструменте не является невозможной проблемой
Рейтинг:
0
KarstenK
Одной из проблем в этой функции может быть то, что она имеет НИКАКИХ ВНЕШНИХ ЭФФЕКТОВ Входной сигнал x создается в стеке, локально модифицируется и затем уничтожается.
Таким образом, функция только модифицирует локальный x и ничего больше. Вы можете изменить это поведение с помощью оператора & -, как упоминалось ранее.
Christian Graus
В этом-то и был смысл. ему дали функцию, которая ничего не делала, и попросили заставить ее работать