首页 > 解决方案 > 减少用函数值定义的变量的值

问题描述

我正在寻找一种方法来减少从函数中获取其值的变量的值。然而,直到现在我还没有想到任何事情。

按照它的编写方式,当前的代码将始终返回函数的值。

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()不允许这样做。

标签: c++decrement

解决方案


您不会将结果保存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);
}

推荐阅读