首頁 >後端開發 >C++ >如何在 C 成員函數中使用成員變數作為預設參數?

如何在 C 成員函數中使用成員變數作為預設參數?

Patricia Arquette
Patricia Arquette原創
2024-11-11 08:58:03681瀏覽

How Can You Use Member Variables as Default Arguments in C   Member Functions?

在 C 中使用成員變數作為預設參數

在 C 中,您可能需要將成員函數的參數設為可選。當沒有提供參數時,最好使用成員變數作為預設值。

考慮以下範例:

class Object {
    ...
    void MoveTo(double speed, Point position);

protected:
    Point initPos;
    Point currPos;
};

程式碼嘗試將成員變數 initPos 指定為MoveTo函數中位置參數的預設值:

void Object::MoveTo(double speed, Point position = initPos) {
    currPos = postion;
}

但是,這種方法會導致編譯錯誤:

error: invalid use of non-static data member 'Object::initPos'

問題是成員函數的預設參數表達式必須僅依賴類或全域範圍元素。此外,必須在頭文件的方法聲明中定義預設參數。

要解決此問題,可以建立MoveTo 方法的兩個重載:

void Object::MoveTo(double speed) {
    MoveTo(speed, initPos);
}

void Object::MoveTo(double speed, Point position) {
    // Implementation here.
}

MoveTo 方法採用單一參數呼叫具有兩個參數的MoveTo 方法,傳遞initPos 值作為預設值。

Object object;
object.MoveTo(10.0); // Calls MoveTo(10.0, initPos)

此方法遵循透過允許 MoveTo 的實作僅定義一次來遵循 DRY 原則。

以上是如何在 C 成員函數中使用成員變數作為預設參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn