2011-02-04 17 views
4

これは次のようなものを試しましたが、うまくいきません。同様の効果を得る方法はありますか?メンバ関数をデフォルトのパラメータとして使用する方法はありますか?

class A 
{ 
public: 
    int foo(); 
    void bar(int b = foo()); 
}; 
+0

正確に何を達成しようとしていますか?私たちにあなたがしたいことの本当の例を与えてください。 –

+0

私はそのようなgetDistanceのようなメンバ関数を持っています(Units units = getDefaultUnits());だから、デフォルト以外のものが必要な場合を除き、ユニットを指定する必要はありません。また、ユニットenumにDEFAULTを追加することも考えました。 –

+0

異なるユニットに異なるタイプを追加し、異なるユニット間で暗黙的な変換関数を追加する方が良いかもしれません。そうすれば、明示的にユニットが必要な場所で使用できるようになり、残りの部分をコンパイラが処理できるようになります! C++では、型の使用は非常に安価で、通常は自由であることを覚えておいてください。 – ltjax

答えて

16

はい。関数をオーバーロードし、その中のメンバー関数を呼び出します。

void bar() { bar(foo()); }

+0

スマートな答え+1! – Nawaz

+0

私はこれを理解しようとしています。私たちを手伝ってくれますか?私はとても混乱している、この目的を見ていない。今度は2つのbar()が宣言されています。別のものを呼び出すだけです。 –

+4

@Nicklamort:実際には、パラメータのデフォルト値がある場合、そのパラメータの引数を渡さずにその関数を呼び出すことができます。オプションで引数も渡すことができます。これはまさにここの状況です。 * bar *を 'bar()'と 'bar(10)'として呼び出すことができるので、実際にはバーのパラメータにはデフォルト値があるようです! – Nawaz

関連する問題