Ich versuche eine Lösung zu finden, was ein sehr triviales Problem sein könnte. Ich möchte meine const unordered_map
in der Klasseninitialisierungsliste initialisieren. Allerdings muss ich noch die Syntax finden, die der Compiler (GCC 6.2.0) akzeptiert. Ein Code-Link ist here.Initialisiere unordered_map in der Initialisierungsliste
#include <unordered_map>
class test {
public:
test()
: map_({23, 1345}, {43, -8745}) {}
private:
const std::unordered_map<long, long> map_;
};
Fehler:
main.cpp: In constructor 'test::test()':
main.cpp:6:36: error: no matching function for call to 'std::unordered_map<long int, long int>::unordered_map(<brace-enclosed initializer list>, <brace-enclosed initializer list>)'
: map_({23, 1345}, {43, -8745}) {}
^
sind die komplexen Konstanten nicht erlaubt, in der Initialisierungsliste initialisiert werden? Oder die Syntax muss anders sein?
Verwendung anstelle der Klammern Zahnspange. –
Um Vlad hinzuzufügen, wird der Fehler ausgelöst, weil Sie 2 Argumente (2 Array-Literale) anstelle von 1 verschachtelten Array übergeben, also fügt ein zusätzliches Paar von {} Ihr Argument '{{23, 1345}, {43, - 8745}} was vielleicht sein mag. –
@VladfromMoscow guten Fang, danke. Ich habe es verpasst. – ilya1725