[英]How to access a variable from a void return function in C++
我是C ++的新手,我正在為一個相當大的項目做貢獻。 我已經編寫了一段代碼,並且正在調用執行大量計算的外部函數。
我需要external_function()
才能完全運行,但是我還需要在external_function()
期間計算的特定變量(雙精度)的值。 我想在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
如果函數external_function
返回一個double值,那么可以,可以將其存儲為double值,如問題所示。 那會很好。
如果您所討論的double
變量是該函數中的局部變量,而該局部變量沒有返回或存儲在通過引用傳遞給該函數的變量中,則您將無法獲取該變量。
是的,可以將external_function(external_variable)
的值存儲在變量中。
確保檢查external_function
的返回類型為double
,因此返回double值。 您將需要像這樣編碼:
double external_function() {
double returnedValue;
// your code here
cout << calculationOutputValue << endl;
return returnedValue;
}
模式1:使用void external_function()
添加參數。
void external_function(double* pValue)
{
*pValue = external_value;
// operation of external_value
// external_value = 142.14
}
得到結果
void call_function()
{
double pValue = 0.0;
external_function(&pValue);
cout<<pValue<<endl;
}
結果: 142.14
模式2:不使用參數函數,修改函數的返回類型。
double external_function()
{
// do something you want...
// external_value = 142.14;
return external_value;
}
得到結果
void call_function()
{
double pValue;
pValue = external_function();
cout<<pValue<<endl;
}
結果: 142.14
您可以使用雙精度類型的類成員變量。 將計算出的值“ d”分配給成員變量。
現在,您可以在類的任何方法中使用此成員變量。
或者,您可以從調用方法中傳遞參考參數,並在外部函數中分配“ d”的值。 例如:
externalFunction(double &updatedValue)
{
//do calculation of d
updatedValue =d;
}
void my_function()
{
double value;
externalFuntcion(value);
//now value will have the value of d;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.