Domanda

Ogni definizione che ho visto di funzione ios::setstate( iostate state ) mostra che la funzione richiede one e solo un parametro ancora quando compilo un programma con la seguente chiamata di funzione, tutto si compilae corre bene:

mystream.setstate( std::ios_base::badbit, true );
.

Che cosa è esattamente il secondo parametro e perché non c'è documentazione a riguardo?

Modifica: sto usando il compilatore della riga di comando dell'ultima versione di Microsoft Visual Studio 2010.

È stato utile?

Soluzione

È necessario accettare un singolo argomento, come hai notato, ma le implementazioni possono estendere le funzioni membro tramite parametri con valori predefiniti (§17.6.5.5).In altre parole, fintanto che funziona:

mystream.setstate( std::ios_base::badbit );

il tuo compilatore è conforme.Nulla dice che il tuo codice non debba funzionare, però.

(L'implementazione della tua libreria ha deciso che sarebbe utile avere un parametro booleano. Non lo noti mai perché ha un valore predefinito, ma puoi comunque entrare nel territorio specifico dell'implementazione e fornire l'argomento tu stesso. Che questoè una buona idea è ovviamente un'altra domanda, ma probabilmente no.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top