Ich kompiliere mit g ++ 4.4.7 (und kann derzeit nicht höher gehen), und verwenden Sie den -std=gnu++0x
Compiler-Schalter, der die Syntax des dritten ermöglichen sollte Linie.C++ kann einen Zeiger in einem Paar nicht initialisieren NULL
typedef std::vector<CI_RecordInfo_Pair> CI_RecordInfo_Vector;
typedef std::vector<std::pair<std::string, CI_RecordInfo_Vector*> > MgrBlks;
MgrBlks mgr_n_blks { {"T2M_NAME", NULL} }; // <--- line 59
Allerdings wirft der Compiler wie folgt:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_pair.h: In constructor 'std::pair<_T1, _T2>::pair(_U1&&, _U2&&) [with _U1 = const char (&)[9], _U2 = long int, _T1 = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _T2 = CI_RecordInfo_Vector*]':
tom.cpp:59: instantiated from here
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_pair.h:90: error: invalid conversion from 'long int' to 'CI_RecordInfo_Vector*'
ich die „long int“ annehmen, die NULL ist, und dass aus irgendeinem Grund bin ich nicht in der Lage, es zu einem Zeiger zu konvertieren. Aber anderswo in einer Karte von Strukturen konnte ich etwas wie
foo["X"] = { NULL, "bar", 12 }; // first element is a pointer
kompilieren Was ist der Unterschied?
Funktioniert 'nullptr' anstelle von' NULL'? –
Es wird nicht von g ++ 4.4 unterstützt. Nicht vor dem 4.6. – Chap