首页 > 解决方案 > 在函数范围之外持久化变量

问题描述

这是我几天来一直坚持的调试任务的一部分。我不是在寻找答案,而是在寻找在哪里寻找答案。

我有一个将 int 作为参数的函数,并且测试使用该函数来计算范围 (0,n] 的总和。我的问题是我是 C++ 新手并且已经用尽了我的知识在哪里寻找解决这个问题。任何帮助将不胜感激。

另外,不用说我不能修改测试文件。

头文件.h

bool getNum(int n);

标头.cpp

bool getNum(int n)
{
    n = n + 1;

    if (n < 10)
    {
        return true;
    }
    else
    {
        return false;
    }
}

测试.cpp

int n = 0;
int sum = 0;

while (getNum(n) && n)
{
    sum += n;
}

CHECK(sum == 45);

我的问题是我无法n通过true逻辑 &&,所以测试永远不会访问while循环的内部。

标签: c++

解决方案


您可以通过将该参数作为参考来更改函数参数的值:

bool getNum(int &n)  // note the reference parameter
{
  // changes to n are visible to the caller of this function
}

当然,您还必须更改声明getNum以匹配。

请注意,调用代码没有变化。

这是一个工作示例的演示


推荐阅读