To dziwny błąd dla mnie. Sprawdź poniższy kod:Brak pasującego błędu funkcji elementu wewnątrz wyrażenia lambda?
void test(void){
vector<string> v;
v.push_back("hello");
auto fn=[=](){
v.push_back("world");
};
}
Pierwszy push_back metoda zdała kompilację ale drugi nie powiodła się, w wyniku czego otrzymuje błąd:
Error:no matching member function for call to 'push_back'
Nota kompilator:
**Note:(687, 36) candidate function not viable: 'this' argument has type 'const vector' (aka 'const vector, allocator > >')
Ale metoda nie jest oznaczona const**
.
Cóż, nie używam żadnego argumentu const i nie mogę określić, co kompilator chce mi powiedzieć. Czy ktokolwiek mógłby mi pomóc?
Prawdopodobnie chcesz przechwycić także przez odniesienie. – NathanOliver
@NathanOliver: Nie "tak dobrze", ale raczej "zamiast". –
Ah tak. Zamiast tego rzeczywiście – NathanOliver