![](/img/trans.png)
[英]iPhone: objc_class_name_TTTabStrip symbol not found build error
[英]Error: 'class name' redeclared as different kind of symbol?
我通过使用class parameter
在.h文件中提前声明类的解决方案来克服此错误
我有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
我正在收集您同时使用C ++和Objective-C的情况。
我建议重命名所有满足Objective-C和C ++代码要求的.cpp
和.m
文件,以使用扩展名.mm
这告诉编译器使用“ Objective-C ++”规则,并且将停止大量编译器麻烦。
另外, CAStreamBasicDescritpion
似乎是C ++类-您必须使用class CAStreamBasicDescritpion;
进行正向声明class CAStreamBasicDescritpion;
, 而不是 @class CAStreamBasicDescritpion;
(注意,没有“ at”符号)-第二种形式仅用于前向声明的Objective-C类。 我怀疑这是您所观察到的特定错误的根本原因。
编辑以回应评论:我不确定您的第一个新问题-只要FFTBufferManager
和CAStreamBasicDescription
都是C ++类,就可以正常工作。 至于您的第二个代码,则取决于该代码行的确切位置( CAStreamBasicDescription thruFormat;
),您可能需要包括标头,而不只是前向声明:在这里声明一个CAStreamBasicDescription
实例,并且编译器需要知道这样做的结构。
您一次不能声明多个类。
将声明更改为
class CAStreamBasicDescription;
class FFTBufferManager;
编译器正在寻找一个unqualified-id
因为它认为您在声明一个类型为CAStreamBasicDescription
的变量,因此它希望在变量名中使用逗号。
看起来您正在尝试创建一个已经存在于Cocoa框架中的类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.