gpt4 book ai didi

c++ - 如何从 C++ 中的 void 返回函数访问变量

转载 作者:搜寻专家 更新时间:2023-10-31 00:09:01 26 4
gpt4 key购买 nike

我是 C++ 的新手,我正在为一个相当大的项目做贡献。我写了一段代码,我正在调用一个执行大量计算的外部函数。

我需要 external_function() 来完整运行,但我还需要在 external_function() 期间计算的特定变量( double )的值。我想在 my_function() 中存储或至少使用此变量的值。这可能吗?类似的东西

double my_variable = external_function(external_variable);

注意代码是这样的:

void external_function()
{
double d;
// perform calculations on d
}

void my_function()
{
...
external_function();
...
}

不幸的是,external_function 不返回任何东西,它只是进行计算并打印一些输出。由于整个项目的代码已经比较复杂,我想尽量少改动没有自己写的代码。非常感谢您的帮助!

最佳答案

我在这里假设您有如下代码:

void external_function()
{
double d;
// perform calculations on d
...
// print d
std::cout << d;
}

void my_function()
{
...
external_function();
...
}

我假设 external_function 不带参数,但它是否带参数真的无关紧要。

您可以通过将返回类型修改为double 来更改external_function:

double external_function()
{
double d;
// perform calculations on d
...
// print d
std::cout << d;
return d;
}

函数仍然可以像这样安全地调用:

external_function();

没有捕获返回值,所以没有必要更新它的其他用途。一些静态代码分析器可能会麻烦您忽略函数的返回值,但如果您愿意,您可以为它们编写一个异常。

这意味着您可以这样调用它:

double value = external_function();

您的第二个选择是将可选参数传递给 external_function():

void external_function(double* out = nullptr)
{
double d;
// perform calculations on d
...
// print d
std::cout << d;
if (out)
*out = d;
}

同样的道理:调用者仍然可以调用这个函数而不改变他们调用它的方式:

 external_function();

但这意味着您现在可以这样调用它:

double value = 0.0;
external_function(&value);
// value now contains the same value as d

关于c++ - 如何从 C++ 中的 void 返回函数访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45473805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com