2012-02-23 11 views
6

Sto provando a spostare il codice dal progetto AurioTouch al mio progetto. Ma ho molti errori:Nome di tipo sconosciuto 'classe'; intendevi "classe"? AurioTouch

Unknown type name 'class'; did you mean 'Class'? 

Per esempio, in FFTBufferManager.h di file:

#include <AudioToolbox/AudioToolbox.h> 
#include <libkern/OSAtomic.h> 

#include "SpectrumAnalysis.h" 

class FFTBufferManager 
{ 
public: 
    FFTBufferManager(UInt32 inNumberFrames); 
    ~FFTBufferManager(); 

Ho provato a cambiare il compilatore LLVM GCC 4.2, ma si dà un sacco di altri errori:

Expected '=', ',', ';', 'asm' or '__attribute__' before 'FFTBufferManager' 

Cosa sto sbagliando?

+8

è molto probabile che tu abbia dimenticato un ';' in 'SpectrumAnalysis.h' – KillianDS

+0

Immagino che funzioni se rimuovi gli include? Prova a correggere quei file prima di iniziare a correggere questo. – Default

+0

SpectrumAnalysis.h è corretto. Il progetto AurioTouch si compila e funziona bene. Ma quando aggiungo i suoi file al mio progetto, compaiono molti errori. – LordPingvin

risposta

8

Per mixare C++ e Objective-C è necessario utilizzare .mm extension. Se, tuttavia, la classe è solo C++ (e include solo intestazioni C/C++), è possibile utilizzare l'estensione normale .cpp.

.mm
Un file sorgente con questa estensione può contenere codice C++, oltre a Objective-C e il codice C. Questa estensione deve essere essere utilizzata solo se si fa riferimento effettivamente alle classi o alle funzioni C++ da del codice Objective-C.

+0

E i file .h, dove viene definita la classe C++? a quale estensione dovrebbe essere cambiato? – peetonn

+0

@peetonn .h sta bene perché non vengono compilati. Sei anche libero di usare .hh e .hpp. – Joe

+0

@Joe Puoi fornire la soluzione in Datil perché sto riscontrando lo stesso problema – Developer

Problemi correlati