Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;objective-c头中的类声明 < P> >我想在Objto-C标题中声明C++类风格,但是在“CPPClass”之前,我得到一个错误:错误:“预期”=“,”,“,”,“,”,“ASM”或“y属性”。_C++_Objective C_Objective C++ - Fatal编程技术网

C++;objective-c头中的类声明 < P> >我想在Objto-C标题中声明C++类风格,但是在“CPPClass”之前,我得到一个错误:错误:“预期”=“,”,“,”,“,”,“ASM”或“y属性”。

C++;objective-c头中的类声明 < P> >我想在Objto-C标题中声明C++类风格,但是在“CPPClass”之前,我得到一个错误:错误:“预期”=“,”,“,”,“,”,“ASM”或“y属性”。,c++,objective-c,objective-c++,C++,Objective C,Objective C++,下面是.h文件中的代码 class CPPClass; @interface OBJCClass : NSObject { CPPClass* m_pCPPObject; } @end 如果我实现了objective-c风格的@class CPPClass,我在定义它时会出错,说它找不到接口声明。不管怎样,否则,所有导入导入C++头的头文件的ObjuleC类也必须是.mm文件。 另外,我已将m文件重命名为mm。将包含它的所有文件重命名为具有.mm扩展名。这将告诉编译

下面是.h文件中的代码

class CPPClass;  
@interface OBJCClass : NSObject  
{  
    CPPClass* m_pCPPObject;  
}  
@end
如果我实现了objective-c风格的
@class CPPClass
,我在定义它时会出错,说它找不到接口声明。不管怎样,否则,所有导入导入C++头的头文件的ObjuleC类也必须是.mm文件。


另外,我已将m文件重命名为mm。

将包含它的所有文件重命名为具有.mm扩展名。这将告诉编译器使用
-ObjC++
标志进行编译。

将包含它的任何文件重命名为具有.mm扩展名。这将告诉编译器使用<代码> -Objc++< /Cord>标记:

编译C++时只声明CPP类。否则,请使用typedef作废:

#ifdef __cplusplus
class CPPClass;
#else
typedef void CPPClass;
#endif

这种方式,非C++编译单元将实例变量视为空指针。由于所有指针都是相同大小的,所以实例变量的类型并不重要。

编译C++时,只声明CPP类。否则,请使用typedef作废:

#ifdef __cplusplus
class CPPClass;
#else
typedef void CPPClass;
#endif

这种方式,非C++编译单元将实例变量视为空指针。由于所有指针大小相同,实例变量的类型无关紧要。

您有哪些文件?CPPClass.cpp、CPPClass.h、objclass.mm和objclass.h?在编译错误之前,正在编译的文件实际上列出了什么。我的猜测是,当.cpp文件包含带有obj-c定义的文件时,它实际上是在抱怨。这些类正如您所说的,cpp文件从不包含OBJCClass.h。我认为问题在于其他obj-c类包括OBJCClass.h,不能解释c风格的声明。您有哪些文件?CPPClass.cpp、CPPClass.h、objclass.mm和objclass.h?在编译错误之前,正在编译的文件实际上列出了什么。我的猜测是,当.cpp文件包含带有obj-c定义的文件时,它实际上是在抱怨。这些类正如您所说的,cpp文件从不包含OBJCClass.h。我认为问题在于其他obj-c类包括OBJCClass.h,并且不能解释c风格的声明。我担心的是,包含该文件的不仅仅是几个文件,我希望有某种方法可以解决这个问题:(我担心的是,包含该文件的不仅仅是几个文件,我希望有某种方法可以解决这个问题:(