我遇到了与question
中提到的相同的错误我通过使用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 :(得分:2)
我正在收集你使用C ++和Objective-C。
我建议重命名所有与Objective-C和C ++代码相遇的.cpp
和.m
文件,以使用扩展名.mm
- 这告诉编译器使用“目标-C ++“规则,并将停止很多编译器的麻烦。
此外,似乎CAStreamBasicDescritpion
是一个C ++类 - 您必须使用class CAStreamBasicDescritpion;
,不 @class CAStreamBasicDescritpion;
向前声明它(注意,否“at”符号) - 第二种形式仅用于前向声明 Objective-C 类。我怀疑这是您观察到的特定错误的根本原因。
编辑以回应评论:我不确定您的第一个新问题 - 只要FFTBufferManager
和CAStreamBasicDescription
都是C ++类,它就应该可以正常工作。至于你的第二个,取决于该行代码的确切位置(CAStreamBasicDescription thruFormat;
),你可能需要包含标题而不仅仅是前向声明:你在这里声明CAStreamBasicDescription
的实例,编译器需要知道它的结构。
答案 1 :(得分:1)
您不能一次声明多个课程。
将您的声明更改为
class CAStreamBasicDescription;
class FFTBufferManager;
编译器正在寻找unqualified-id
,因为它认为你声明了CAStreamBasicDescription
类型的变量,因此它需要一个变量名称,你给它一个逗号。
答案 2 :(得分:0)
看起来您正在尝试创建一个已存在于其中一个Cocoa框架中的类。