Ho una funzione,C++ Argomento predefinito per il vettore <int> &?
void test(vector<int>& vec);
Come posso impostare l'argomento di default per vec? Ho provato
void test(vector<int>& vec = vector<int>());
Ma c'è un avvertimento "estensione non standard utilizzata: 'argomento di default': conversione da 'std :: vector < _Ty>' a 'std :: vector < _Ty> &'"
C'è un modo migliore per farlo? Invece di
void test() {
vector<int> dummy;
test(dummy);
}
saluti, Voteforpedro
+1 ma penso che si dovrebbe sottolineare che "test" non sarebbe generalmente thread-safe se fosse stato modificato questo "DEFAULT_VECTOR". Potrebbe essere noioso, ma consiglio vivamente di scrivere due funzioni per tali esigenze (si può riutilizzare l'altra): void test() {vector temp; prova (temperatura); } –
stinky472
@ stinky472: Grazie, ho aggiornato la mia risposta. – ereOn
Come nota a margine, esiste un modo hacky per ottenere un riferimento a un riferimento temporaneo se è possibile utilizzare un metodo su quest'ultimo che restituisce tale riferimento a se stesso ... ad es. '' Operatore =. Quindi, 'void test (vector & vec = vector () .operator = (vector ()));' dovrebbe funzionare (la durata del temporaneo non è influenzata qui e rimarrà sufficiente per gestire la chiamata). Ma per favore non farlo :) –