Domanda

Voglio usare alcune raccolte C ++ STL nella mia app per iPhone Objective-C. Apparentemente ciò è possibile dando ai file l'estensione ".mm". . Quali sono alcune delle stranezze / sorprese associate a questo?

Voglio usare i contenitori di base con cui ho familiarità (vettore, coda, set, ...)

Cheers!

È stato utile?

Soluzione

Vedi Uso del C ++ con Objective-C per un elenco dettagliato di ciò che puoi e non puoi fare. Puoi fare la maggior parte delle cose che ti aspetteresti. Non puoi fare cose come avere una classe C ++ ereditata da una classe Objective-C o viceversa, non puoi mescolare eccezioni C ++ con eccezioni Objective-C e C ++ introduce diverse nuove parole chiave non presenti in Objective-C.

Altri suggerimenti

La principale stranezza di Objective-C ++ è che se non si passa -fobjc-call-cxx-cdtors a g ++, non chiamerà il costruttore e il distruttore delle variabili di istanza C ++ negli oggetti ObjC. Quindi ricorda di attivare questa opzione e dovresti essere bravo.

I file saranno compilati con il compilatore Objective-C ++, quindi le cose si comporteranno più come g ++ che gcc, ma dato che è quello che vuoi probabilmente non conta come una sorpresa. Dal punto di vista Objective-C, non sono a conoscenza di alcun gotchas e ho lavorato su diversi grandi progetti che hanno fatto un uso significativo di Objective-C ++. Tieni a mente che le parole riservate di Objective-C sono riservate anche in Objective-C ++, quindi puoi occasionalmente imbatterti in problemi con librerie C ++ di terze parti (ad esempio, se usano " id " come parametro in un'interfaccia pubblica) .

Saresti sorpreso di quanto funzioni bene. Non ho mai avuto problemi a mescolare Obj-C e C ++ in un file .mm.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top