C++函数不更新变量
C++ function does not update variable
我目前正在编写一个函数,它必须更新布尔值。
但出于某种原因,它不会这样做。让我给你看一个简化的版本:
main.cpp
#include <iostream>
#include "header.h"
int main(){
bool limit = true;
test(limit);
if (limit == false){cout << "hi";}
}
header.h
void test(bool x);
header.cpp
#include <iostream>
#include "header.h"
void test(bool x){
x = false;
}
我在主函数中定义了 bool“limit”。然后我将它传递给位于 header.cpp 中的函数“test”。在此函数中,bool 限制设置为 false。
然而,返回 main.cpp 布尔值仍然为真。我看到了,因为没有调用 if 条件。
我怀疑该错误与文件之间传递的信息有关。
您知道真正的原因和可能的替代方案吗?
在test
中,x
是传递给它的值的副本。请改用参考:
void test(bool &x)
{
x=false;
}
当您将函数 test
声明为
时
void test(bool x);
参数bool x
按值传递。也就是说,计算机会复制您传递给 test
的变量。因此,当测试更新这样一个变量时,您只是在修改一个临时变量,而不会影响您从 main 传递给它的 bool
限制。
如果您打算更新 x
,您应该传递 reference 并将 test
声明为
void test(bool& x);
我目前正在编写一个函数,它必须更新布尔值。
但出于某种原因,它不会这样做。让我给你看一个简化的版本:
main.cpp
#include <iostream>
#include "header.h"
int main(){
bool limit = true;
test(limit);
if (limit == false){cout << "hi";}
}
header.h
void test(bool x);
header.cpp
#include <iostream>
#include "header.h"
void test(bool x){
x = false;
}
我在主函数中定义了 bool“limit”。然后我将它传递给位于 header.cpp 中的函数“test”。在此函数中,bool 限制设置为 false。 然而,返回 main.cpp 布尔值仍然为真。我看到了,因为没有调用 if 条件。 我怀疑该错误与文件之间传递的信息有关。 您知道真正的原因和可能的替代方案吗?
在test
中,x
是传递给它的值的副本。请改用参考:
void test(bool &x)
{
x=false;
}
当您将函数 test
声明为
void test(bool x);
参数bool x
按值传递。也就是说,计算机会复制您传递给 test
的变量。因此,当测试更新这样一个变量时,您只是在修改一个临时变量,而不会影响您从 main 传递给它的 bool
限制。
如果您打算更新 x
,您应该传递 reference 并将 test
声明为
void test(bool& x);