2012-02-23 7 views
6

私はAurioTouchプロジェクトから私のプロジェクトにコードを移動しようとしています。不明なタイプ名 'クラス'。あなたは「クラス」を意味しましたか? AurioTouch

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

#include "SpectrumAnalysis.h" 

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

私はLLVM GCC 4.2にコンパイラを変更しようとしましたが、それは他のエラーの多くを与える:ファイルFFTBufferManager.hで、例えば

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

: は、しかし、私は多くのエラーを持っています:

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

私は間違っていますか?

+8

あなたは 'SpectrumAnalysis.h'で'; 'を忘れている可能性があります。 – KillianDS

+0

あなたがインクルードを削除するとうまくいくと思いますか?このファイルを修正する前に、これらのファイルを修正してください。 – Default

+0

SpectrumAnalysis.hが正しいです。 AurioTouchプロジェクトはコンパイルして正常に動作します。しかし、プロジェクトにファイルを追加すると、多くのエラーがポップアップします。 – LordPingvin

答えて

8

C++とObjective-Cを混在させるには、.mm extensionを使用する必要があります。しかし、あなたのクラスがC++のみで(そしてC/C++ヘッダーのみを含む場合)、普通の.cppの拡張子を使うことができます。

.mm
のObjective-CとCコードに加えて、C++コードを含むことができ、この拡張子を持つソースファイル。このエクステンションは、 のObjective-Cコードの のC++クラスまたは機能を実際に参照する場合にのみ使用してください。

+0

C++クラスはどこで定義されていますか?どの拡張機能に変更する必要がありますか? – peetonn

+0

@peetonn .hはコンパイルされないので問題ありません。 .hhと.hppも自由に使用できます。 – Joe

+0

@Joe私は同じ問題を抱えているので、あなたはdatilのソリューションを提供してもらえますか – Developer

関連する問題