Frage

Ich mag einige C ++ STL Sammlungen in meinem Objective-C iPhone App verwenden. Offensichtlich ist dies möglich, indem Sie Dateien die Erweiterung „.mm“ geben. Was sind einige der Macken / Überraschungen damit verbunden?

Ich möchte die grundlegenden Behälter verwenden, die ich kenne (Vektor, Schlange, Set, ...)

Cheers!

War es hilfreich?

Lösung

Siehe C ++ mit Objective-C eine detaillierte Liste, was Sie können und was nicht. Sie können die meisten Dinge tun, die man erwarten würde. Sie können nicht nur Dinge wie eine C ++ Klasse erbt von einer Objective-C-Klasse oder umgekehrt haben, können Sie nicht C ++ Ausnahmen mit Objective-C Ausnahmen und C ++ stellt einige neue Schlüsselwörter nicht in Objective-C mischen.

Andere Tipps

Die große Marotte von Objective-C ++ ist, dass, wenn Sie nicht -fobjc-call-cxx-cdtors Sie passieren zu g ++, wird es den Konstruktor und Destruktor von C ++ Instanzvariablen in den ObjC Objekten nicht nennen. Also denken Sie daran, dass die Option zu aktivieren, und Sie sollten gut sein.

Die Dateien werden mit der Objective-C ++ Compiler kompiliert werden, so den Dingen eher wie g ++ als gcc verhalten, da aber das ist, was Sie wollen, dass es wahrscheinlich nicht als Überraschung zählen. Von der Objective-C-Seite, bin ich von irgendwelchen gotchas nicht bewusst, und ich habe auf mehreren großen Projekten gearbeitet, die erhebliche gebrauchte von Objective-C ++ gemacht. Denken Sie daran, dass Objective-C reservierte Wörter in Objective-C ++ als auch reserviert werden, so können Sie in Probleme mit Dritt C ++ Bibliotheken gelegentlich laufen (zum Beispiel, wenn sie „id“ als Parameter in einer öffentlichen Schnittstelle verwenden).

Sie würden überrascht sein, wie gut es funktioniert. Ich habe wirklich nicht in irgendwelche Probleme bekommen Vermischungs Obj-C und C ++ in einer .mm Datei.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top