2011-09-07 46 views
0

我正面臨着相同的錯誤問這個question錯誤:'類名'重新宣佈爲不同類型的符號?

我在我的.h文件中與class parameter

我有FFTBufferManager.h and FFTBufferManager.cpp文件,並使用它提前宣佈的時間類的解決方案,此錯誤克服在HomeView.h and HomeView.mm文件

class FFTBufferManager,CAStreamBasicDescription,DCRejectionFilter;

但現在我有誤差

#include "FFTBufferManager.h" 
#include "aurio_helper.h" 
#include "CAStreamBasicDescription.h" 

class CAStreamBasicDescription,FFTBufferManager; //here it shows this error 
    EXpected Unqualified-id befor ',' token 


@interface HomeView 
{ 
    FFTBufferManager*   fftBufferManager; 
//it shows erros 
EXpected Unqualified-id befor ',' token 
    ISO c++ forbids declaration of FFTBufferManager with no type 

}

@property FFTBufferManager*  fftBufferManager; 
//shows error 
'FFTBufferManager' is not a type 
+0

這裏我有我的課'FFTBufferManager'這是'.cpp'文件,我導入它在我的iPhone項目 – Heena

+0

只是要非常清楚,你在同時使用C++和Objective-C同樣的錯誤你項目? – Mac

+0

是的,我有'.h和.cpp'文件,並在我的'.h和。mm'文件 – Heena

回答

0

看起來你正在試圖創建已存在Cocoa框架中的一個類。

2

我收集你正在使用C++和Objective-C。

我建議重命名所有的.cpp.m文件中的Objective-C和C++代碼正在開會使用擴展.mm - 這告訴編譯器使用「的Objective-C++」的規則,並停止了不少編譯器麻煩。

而且,它似乎CAStreamBasicDescritpion是一個C++類 - 你必須(「在」標註,無)與class CAStreamBasicDescritpion;前瞻性聲明它,@class CAStreamBasicDescritpion; - 第二種形式只適用於前置聲明Objective-C類。我懷疑這是你觀察到的特定錯誤的根本原因。

編輯迴應評論:我不知道關於你的第一個新的問題 - 這應該工作正常,只要雙方FFTBufferManagerCAStreamBasicDescription是C++類。至於你的第二個代碼,根據代碼行的確切位置(CAStreamBasicDescription thruFormat;),你可能需要包含頭文件而不是前向聲明:你在這裏聲明CAStreamBasicDescription的一個實例,編譯器需要知道它的結構要這樣做。

+0

與'class FFTBufferManager,CAStreamBasicDescription;'一樣嘗試了您的建議,但它在''之前給出'預期的非限定id','token'以及我將對象聲明爲'CAStreamBasicDescription \t thruFormat;'它給出ISO:C++禁止對沒有類型的CAStreamBasicDescription進行解析「 – Heena

+0

編輯該問題請查看 – Heena

+0

是不是我們不能將兩個類一起聲明爲'class FFTBufferManager,CAStreamBasicDescription'?因爲它在''給出第一個錯誤, – Heena

1

一次不能聲明多個類。

更改報關單

class CAStreamBasicDescription; 
class FFTBufferManager; 

編譯器正在尋找一個unqualified-id因爲它認爲你在聲明CAStreamBasicDescription類型的變量,因此,預計在那裏你給它一個逗號一個變量名。

相關問題