Initialisieren unordered_map in der Initialisierungsliste
Ich versuche eine Lösung zu finden, was vielleicht ein sehr triviales problem. Ich möchte meine initialisieren const unordered_map
in der Klasse Initialisierungsliste. Aber ich bin noch zu finden, die syntax, die der compiler (GCC 6.2.0) akzeptieren. Ein code, der link ist hier.
#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 dürfen nicht initialisiert werden in der Initialisierungsliste? Oder die syntax ist anders?
- Verwenden Sie geschweifte Klammern anstatt der Runden Klammern.
- Hinzufügen Vlad, der Fehler wird ausgelöst, weil Sie auf der Durchreise sind 2 Argumente (2-array-Literale) anstelle von 1 verschachtelte array, so dass das hinzufügen ein extra paar {} macht Ihre Argumentation
{{23, 1345}, {43, -8745}}
werden können, was Sie wollen. - guter Fang, ich danke Ihnen. Ich habe es verpasst.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie geschweifte Klammern statt der Runden Klammern