2010-11-29 14 views
9

C++では、関数内のリスト参照のデフォルト値はどのように指定しますか?リスト参照のデフォルトパラメータ

void fun(
    std::list<My_Object *> &the_list, 
    int n = 4 
) 
+1

デフォルト値は何ですか? –

+0

特定のリスト。私はそれをインラインで入力したいと思う。 (マークアップを修正していただきありがとうございます) – Tim

答えて

7

単純な参照の場合、唯一の唯一のものはおそらく利用できない有効な左辺値です。しかし、それはあなたをconstのための基準であるならば、このような空のリストにそれをデフォルトの可能性:あなたは、この

void fun(
     std::list<My_Object *> & the_list = a, 
     int n = 4 
    ) 
のような宣言サイトで利用可能であるという名前のリストを、持っている場合

void fun(
    std::list<My_Object *> const & the_list = std::list<My_Object *>(), 
    int n = 4 
) 

しかしaリストはまだ「生きている」となるように、あなたがC++で

5

関数を呼び出すとき、どのように私はにリスト参照のデフォルト 値を指定します注意してくださいは機能しますか?

あなたの場合、私はしません。それはリストなしで呼び出すことができるようには機能をオーバーロード、またはユーザーがNULLポインタを渡すことができるようには、ポインタあたりの引数を取る。どちらか

私はオーバーロードを強くお勧めします。

+1

+1オーバーロードを優先します。 –

+0

問題の関数は〜16行のコンストラクタであり、オーバーロードすると重複したコードになります。 – Tim

+1

共通の初期化ロジックを除外するか、左辺値を使用して新しい初期化ロジックを作成してからスワップすることができます。 – Puppy

関連する問題