2012-02-23 213 views
6

我想將AurioTouch項目的代碼移到我的項目中。 但我有許多錯誤:未知類型名稱'class';你的意思是'班'? AurioTouch

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

例如,在文件FFTBufferManager.h:

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

#include "SpectrumAnalysis.h" 

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

我試圖編譯器更改爲LLVM GCC 4.2,但它給了很多其他的錯誤:

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

我在做什麼錯?

+8

它很可能你忘了',''中SpectrumAnalysis.h' – KillianDS 2012-02-23 15:25:21

+0

我想如果你刪除它包括工作?嘗試糾正這些文件,然後再開始糾正這一問題。 – Default 2012-02-23 15:26:14

+0

SpectrumAnalysis.h是正確的。 AurioTouch項目編譯並運行良好。但是當我將它的文件添加到我的項目中時,會彈出很多錯誤。 – LordPingvin 2012-02-23 15:40:19

回答

8

要混合使用C++和Objective-C,您需要使用.mm extension。但是,如果你的類只有C++(並且只包含C/C++頭文件),那麼你可以使用正常的.cpp擴展名。

.mm
與此擴展可以包含除了Objective-C和C代碼C++代碼的源文件。只有當您實際參考Objective-C代碼中的C++類或 的功能時,才應使用此擴展名 。

+0

什麼是.h文件,其中C++類被定義?應該更改哪個擴展? – peetonn 2012-06-01 18:06:18

+0

@peetonn .h沒問題,因爲它們沒有被編譯。您也可以自由使用.hh和.hpp。因爲我有同樣的問題 – Joe 2012-06-01 19:55:46

+0

@Joe能否請您提供datil的解決方案,我也一樣,但仍然得到同樣的錯誤!我不知道如何解決這個問題。 – Developer 2012-06-11 07:19:00