簡體   English   中英

如何從C ++中的void返回函數訪問變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM