Уменьшите значения переменной, которая определяется значением функции - PullRequest
0 голосов
/ 04 февраля 2020

Я ищу способ уменьшить значение переменной, которая получает значение от функции. Однако до сих пор я ни о чем не думал.

Как написано, код в настоящее время всегда будет возвращать значение функции.

std::string Barger::ShowMessage() {

    int var = Barger::get().var();

    char mes[20];

    sprintf_s(mes, sizeof(mes), "Value Var %d", var--);

    return std::string(mes);
}

Что мне нужно, так это каждый раз, когда выполняется функция std::string Barger::ShowMessage(), она будет уменьшаться на -1 из переменной, но функция Barger::get().var() не позволяет этого.

1 Ответ

2 голосов
/ 04 февраля 2020

Вы не сохраняете результат operator-- нигде, кроме как в локальной переменной, поэтому каждый раз, когда вы вызываете ShowMessage(), вы получаете одно и то же исходное значение снова и снова. Вам нужно что-то более похожее на следующее, которое вы должны будете добавить, если у вас его еще нет:

std::string Barger::ShowMessage() {

    int var = Barger::get().var();

    char mes[20];

    sprintf_s(mes, sizeof(mes), "Value Var %d", var--);

    Barger::get().setvar(var); // <-- here

    return std::string(mes);
}

Если вы не можете изменить var(), чтобы возвращать неконстантную int& ссылку на какую-то внутренняя переменная int, а не ее копия int:

std::string Barger::ShowMessage() {

    int& var = Barger::get().var();

    char mes[20];

    sprintf_s(mes, sizeof(mes), "Value Var %d", var--);

    return std::string(mes);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...