Mam funkcji,C++ Domyślny argument dla wektora <int> &?
void test(vector<int>& vec);
Jak mogę ustawić domyślny argument vec? Próbowałem
void test(vector<int>& vec = vector<int>());
Ale jest ostrzeżenie "niestandardowe rozszerzenie używane: 'default argumentem': konwersja z 'std :: vector < _Ty>' do 'std :: vector < _Ty> &'"
Czy jest lepszy sposób to zrobić? Zamiast
void test() {
vector<int> dummy;
test(dummy);
}
Pozdrawiam, Voteforpedro
+1 ale myślę, że należy zaznaczyć, że "test" generalnie nie byłby bezpieczny dla wątków, gdyby zmodyfikował ten "DEFAULT_VECTOR". Może to być uciążliwe, ale zdecydowanie zaleciłbym pisanie dwóch funkcji spełniających takie potrzeby (jeden może być użyty ponownie): void test() {vector temp; test (temp); } –
stinky472
@ stinky472: Dzięki, zaktualizowałem moją odpowiedź. – ereOn
Na marginesie, istnieje hacky sposób na uzyskanie odniesienia do tymczasowego, jeśli możesz użyć na nim metody, która zwraca takie odniesienie do siebie ... np. 'operator ='. Tak więc, 'void test (wektor & vec = wektor () .operator = (wektor ()));' powinien działać (czas życia tymczasowego nie ma tutaj wpływu i pozostanie wystarczający do obsłużenia połączenia). Ale proszę, nie rób tego :) –