2016-08-14 4 views
0

Ich habe ein Problem mit std :: vector mit String^Objekten zu erstellen:VisualC++: String^und std :: vector

std::vector<String^> vSometing; 

einen Fehler prompt:

'&&': cannot use this indirection on type 'System::String ^'

So, wie man Liste der String^Objekte?

+0

* Ein grundlegendes Verständnis der Funktionsweise der Speicherbereinigung ist sehr wichtig, wenn Sie versuchen, Interop-Code zu schreiben. Obwohl der Compiler oft Ihre Fingerknöchel rappen wird, wenn Sie es falsch verstehen. Es kann nur funktionieren, wenn es Objektstämme zurück finden kann, wie diese Referenzen von System :: String. Kann nicht funktionieren, wenn Sie sie in einem std :: vector speichern, der GC hat keine Ahnung, wie dieser Typ aussieht, kann also nicht an der richtigen Stelle nach der Objektreferenz suchen. Sie müssen einen 'std :: vector ' verwenden, um alles native zu behalten, oder eine 'List ^', um alles verwaltet zu halten. –

Antwort

0

Sie könnten die STL/CLR-Bibliothek verwenden, wenn Sie die Verwendung von STL-Sammlungen wirklich bevorzugen. Eine Lösung ist List. Vector verwendet neu, um seine Objekte zuzuordnen, aber Sie können System::String^ nicht zuordnen.

Soo verwenden List<String^> oder konvertieren System::String^ zu std::string. Wie konvertiert man diese topic.

+0

Bitte lesen Sie [diesen Artikel] (http://www.codeproject.com/Articles/24206/A-look-at-STL-CLR-performance-for-linear-container), bevor Sie STL/CLR empfehlen. –