000
08.06.2018, 11:38 Uhr
Getit
|
Ich habe aus einem Buch ein Beispiel abgetippt.
Bei meiner Frage geht es weniger um das Beispiel, sondern mehr um einen Funktionsaufruf. Deshalb poste ich nur einen Auszug:
C++: |
bool process(const std::vector<std::string>& args) { ... }
int main(int argc, char* arg[]) { bool result = process({argv + 1, argv + argc}); // es geht nur um diesen Fktaufruf }
|
Das ganze kompiliere ich so: Das war
Code: |
g++ -std=c++17 test.cpp -o test.o
|
Wenn ich den Fktaufruf so ändere
Erhalte ich folgende Fehlermeldung:
Code: |
test.cpp:42:17: error: no matching function for call to 'process' bool result = process({argv + 1}); ^~~~~~~ test.cpp:21:6: note: candidate function not viable: cannot convert initializer list argument to 'const std::vector<std::string>' (aka 'const vector<basic_string<char, char_traits<char>, allocator<char> > >') bool process(const std::vector<std::string>& args) { ^
|
Ich verstehe in dieser Fehlermeldung nur, dass keine passende Methodensignatur gefunden wird.
Warum???
Was ist an
C++: |
process({argv + 1, argv + argc})
|
und
-außer das die Fkt. beim 1. mal mit 2 Args und beim 2. mal mit 1Args aufgerufen wird- unterschiedlich? Dieser Post wurde am 08.06.2018 um 11:39 Uhr von Getit editiert. |