當建立具有多個參數的方法的類別時,使用以下命令可能會很有幫助:有些參數是可選的。透過使用預設參數功能,您可以為參數設定預設值,當客戶端程式碼未提供值時可以使用該預設值。
在您的範例中,您嘗試使用成員變數 (initPos) 作為 MoveTo 成員函數的預設參數。但是,編譯器發出錯誤,指示非靜態資料成員的使用無效。
預設情況下,成員變數在方法的作用域中不可訪問,因為它們被視為一部分物件的狀態而不是方法的上下文。因此,預設情況下,成員函數中的參數只能依賴類別內或全域範圍的元素。
要解決此問題,您需要訴諸方法重載。方法重載可讓您建立具有不同簽章的相同方法的多個版本。以下是如何在程式碼中實現它:
// Object.h class Object { public: ... void MoveTo(double speed); void MoveTo(double speed, Point position); protected: Point initPos; Point currPos; };
// Object.c void Object::MoveTo(double speed) { MoveTo(speed, initPos); } void Object::MoveTo(double speed, Point position) { // Everything is done here. }
透過定義 MoveTo 方法的兩個版本,您可以有效地提供預設參數,而無需直接依賴成員變數。 MoveTo(double) 方法使用 initPos 值作為第二個參數呼叫 MoveTo(double, Point) 方法,讓您保留所需的功能並避免編譯器錯誤。
以上是我可以在 C 方法中使用成員變數作為預設參數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!