Interagire con le classi C ++ di Swift

Ho una libreria significativa di classi scritte in C ++. Sto cercando di farne uso attraverso qualche tipo di bridge all’interno di Swift piuttosto che riscriverli come codice Swift. La motivazione principale è che il codice C ++ rappresenta una libreria di base che viene utilizzata su più piattaforms. Effettivamente, sto solo creando un’interfaccia utente basata su Swift per consentire alle funzionalità di base di funzionare sotto OS X.

Ci sono altre domande che chiedono: “Come posso chiamare una funzione C ++ da Swift”. Questa non è la mia domanda. Per eseguire il bridge su una funzione C ++, quanto segue funziona correttamente:

Definire un’intestazione di bridging tramite “C”

#ifndef ImageReader_hpp #define ImageReader_hpp #ifdef __cplusplus extern "C" { #endif const char *hexdump(char *filename); const char *imageType(char *filename); #ifdef __cplusplus } #endif #endif /* ImageReader_hpp */ 

Il codice Swift ora può chiamare direttamente le funzioni

 let type = String.fromCString(imageType(filename)) let dump = String.fromCString(hexdump(filename)) 

La mia domanda è più specifica. Come posso creare un’istanza e manipolare una class C ++ da Swift? Non riesco a trovare nulla pubblicato su questo.