C でのデフォルト引数としてのメンバー変数の使用
C でメンバー関数を作成する場合、多くの場合、特定の引数をオプションにして、メンバー変数をデフォルト値として使用します。ただし、メンバー変数が静的でない場合、コンパイル エラーが発生する可能性があります。
次のコード スニペットを検討してください:
class Object { public: void MoveTo(double speed, Point position); protected: Point initPos; Point currPos; }; void Object::MoveTo(double speed, Point position = initPos) { currPos = postion; }
このコードをコンパイルしようとすると、エラー メッセージ「無効です」が表示されます。非静的データメンバー「Object::initPos」の使用。これは、デフォルトの引数式がクラス以外のメンバーに依存できないために発生します。
この問題を解決するには、MoveTo メソッドの 2 つのオーバーロードを使用する必要があります。
void Object::MoveTo(double speed) { MoveTo(speed, initPos); } void Object::MoveTo(double speed, Point position) { currPos = postion; }
単一引数メソッド2 つの引数を持つメソッドを呼び出し、デフォルト値を渡します。これにより、メンバー変数をデフォルトとして使用するという望ましい機能を維持しながら、MoveTo を単一実装することができます。
これらの手法に従うことで、コンパイルに直面することなく、C メンバー関数のデフォルト引数としてメンバー変数を効果的に利用できます。エラー。
以上がC メンバー関数でメンバー変数をデフォルトの引数として使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。