2010-11-29 6 views
9

En C++, comment spécifier une valeur par défaut pour une référence de liste dans une fonction?Paramètre par défaut pour une référence de liste

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

Quelle devrait être la valeur par défaut? –

+0

Une liste spécifique. Je préférerais l'entrer en ligne. (Merci de corriger le balisage.) – Tim

Répondre

7

si elle est une référence simple, la seule chose que vous un défaut à un lvalue valide qui est probablement pas disponible. Mais si elle est une référence à vous const pourrait-il par défaut à une liste vide comme ceci:

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

Si vous avez une liste nommé, qui est disponible sur le site de déclaration, puis comme celui-ci

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

, mais veillez à ce que la liste a est toujours « vivant » lorsque vous appelez la fonction

5

en C++, comment pourrais-je spécifier une valeur par défaut pour une référence de liste dans un fonction?

Je ne voudrais pas, dans votre cas. Soit surcharger la fonction afin qu'elle puisse être appelée sans une liste, ou prendre l'argument par pointeur, de sorte que les utilisateurs peuvent passer un pointeur NULL.

Je préférerais fortement la surcharge.

+1

+1 pour préférer la surcharge –

+0

La fonction en question est un constructeur de ~ 16 lignes, et donc une surcharge entraînerait un code en double. – Tim

+1

Vous pouvez décomposer une logique d'initialisation commune ou en construire une nouvelle avec une valeur l, puis l'échanger. – Puppy

Questions connexes