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.
InformationsquelleAutor ilya1725 | 2017-06-19
Schreibe einen Kommentar