Ich habe meine C++/CLI-Code-Arrays wie folgt aus (zum Beispiel):Inkompatibilität mit verwalteten Array und std: Array zur gleichen Zeit
array<String^>^ GetColNames() {
vector<string> vec = impl->getColNames();
array<String^>^ arr = gcnew array<String^>(vec.size());
for (int i = 0; i < vec.size(); i++) {
arr[i] = strConvert(vec[i]);
}
return arr;
}
Es kompiliert gut, bis ich die Bibliothek „Array“, um das hinzufügen Projekt:
#include <array>
Dann weiß ich nicht, wie das verwaltete CLI-Array verwenden, da der Compiler denkt, dass alle deklarierten Arrays die std::array
sind.
Fehler Beispiele:
array<String^>^ arr
// ^Error here: "too few arguments for class template "std::array""
gcnew array<String^>(vec.size())
// ^Error: "Expected a type specifier"
Wie dieses Problem zu lösen? Ich habe versucht, using namespace std
aus dieser Datei zu entfernen, aber es macht keinen Unterschied. Sollte ich das aus jeder anderen C++ - Datei des Projekts entfernen?
C++ - CLI ist ganz sicher nicht C++. – Deduplicator
Entfernen Sie 'using namespace std;'? Weitere Informationen finden Sie hier: http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice – Carsten
Sie haben 'using namespace std;' Sie bekommen, was Sie verdienen:) – jrok