Mam kod C++/CLI przy użyciu tablic tak (na przykład):Niezgodność użyciu zarządzanego tablicy i std: Array w tym samym czasie
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;
}
Jest kompilacją dobrze, dopóki ja dodać biblioteka „tablicę” do projekt:
#include <array>
Potem nie wiem, jak korzystać z zarządzanego tablicę CLI, ponieważ kompilator uważa, że wszystkie zgłoszone tablice są na std::array
.
Błędy przykładów:
array<String^>^ arr
// ^Error here: "too few arguments for class template "std::array""
gcnew array<String^>(vec.size())
// ^Error: "Expected a type specifier"
Jak rozwiązać ten problem? Próbowałem usunąć using namespace std
z tego pliku, ale nie robi to żadnej różnicy. Czy powinienem usunąć to z każdego innego pliku C++ w projekcie?
C++ - cli na pewno nie jest C++. – Deduplicator
Usunąć 'using namespace std;'? Zobacz tutaj, aby uzyskać więcej informacji: http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice – Carsten
Masz 'using namespace std;' Otrzymujesz to, na co zasługujesz:) – jrok