」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼無法將非常量左值參考綁定到 C++ 中的右值?

為什麼無法將非常量左值參考綁定到 C++ 中的右值?

發佈於2024-12-22
瀏覽:222

 Why Can\'t I Bind a Non-Const Lvalue Reference to an Rvalue in C  ?

無法將非常量左值引用綁定到右值:解決方案

給定的程式碼片段在初始化類別Foo 的對象時遇到錯誤在Bar 類別的建構子中。錯誤訊息表示非常量左值參考 (Foo f) 正在綁定到右值(呼叫 genValue() 的結果)。

在 C 中,非常量引用參數只能引用命名的變數(左值)。然而,genValue() 的結果是一個臨時值(右值)。為了解決這個問題,我們需要透過 value (int) 傳遞 genValue() 的值。

class Foo {
public:
    Foo(int x) {
        this->x = x;
    }
private:
    int x;
};

class Bar {
public:
    Bar(): f(genValue()) {
    }
private:
    Foo f;

    int genValue() {
        int x;
        // do something ...
        x = 1;
        return x;
    }
};

透過將建構子參數改為 int,我們現在可以在建構子範圍內初始化 Foo 對象,而不會出現任何錯誤。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3