2010-11-29 14 views
9

En C++, ¿cómo puedo especificar un valor predeterminado para una referencia de lista en una función?Parámetro predeterminado para una referencia de lista

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

¿Cuál debe ser el valor predeterminado? –

+0

Una lista específica. Prefiero ingresar en línea. (Gracias por arreglar el marcado.) – Tim

Respuesta

7

si es una clara referencia, la única cosa que un defecto que es un valor-I válida que probablemente no está disponible. Pero si se trata de una referencia a const que pueda no pagar a una lista vacía como esto:

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

Si usted tiene una lista nombrado, que está disponible en el sitio de la declaración, a continuación, como esto

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

pero tenga cuidado para que la lista a sigue "vivo" cuando se llama a la función

5

en C++, ¿cómo podría especificar un valor por defecto para una referencia mencionados de función?

No lo haría, en su caso. De cualquier sobrecargar la función de modo que pueda ser llamado sin una lista, o tomar el argumento por el puntero, por lo que los usuarios pueden pasar un puntero NULL.

Preferiría sobrecargar.

+1

+1 por preferir la sobrecarga –

+0

La función en cuestión es un constructor de ~ 16 líneas, por lo que la sobrecarga daría lugar a un código duplicado. – Tim

+1

Puede factorizar la lógica de inicialización común, o construir una nueva con un lvalue y luego intercambiar. – Puppy

Cuestiones relacionadas