C++ objective-c为什么.mm文件被视为int*类型?

C++ objective-c为什么.mm文件被视为int*类型?,c++,objective-c,cocos2d-iphone,objective-c++,C++,Objective C,Cocos2d Iphone,Objective C++,我正在尝试创建一个.mm类的弱引用。。。问题在于文件,即使代码明智地将其视为NSObject类,但它将其视为int*类型。如果我将文件改回.m,尽管它接受它作为Obj-c类,但代码停止工作,因为cocos2d要求文件为.mm //Game Logic is actually NSObject meaning obj-c class. @interface GameLogic : NSObject //However here I get the error like the file is

我正在尝试创建一个.mm类的弱引用。。。问题在于文件,即使代码明智地将其视为NSObject类,但它将其视为int*类型。如果我将文件改回.m,尽管它接受它作为Obj-c类,但代码停止工作,因为cocos2d要求文件为.mm

//Game Logic is actually NSObject meaning obj-c class.
@interface GameLogic : NSObject 


//However here I get the error like the file is type int*
@property (weak,nonatomic)GameLogic * __weak gameLogicWeak;
这是我得到的2个MSG

Property with 'weak' attribute must be of object type

'__weak' only applies to Objective-C object or block pointer types; type here is 'int *'
有人知道我能做些什么来克服这个问题吗? 我知道存在许多解决方案,其中之一就是不要创建薄弱环节,使用委托,或者其他许多可能的解决方案

但这个解决方案是我提出的一个更干净的解决方案,它使ARC在内存清理方面变得方便

有什么建议吗?变通办法?解决?有人有这个问题吗

====

当分别在.h和.m中添加@class GameLogic和#import时,我得到以下消息。此消息是在我使用弱引用的位置生成的

Receiver type 'GameLogic' for instance message is a forward declaration
你做了什么

#import "GameLogic.h"
在添加属性的标题中?您还可以添加

@class GameLogic;
但不是

class GameLogic;

因为这会使它成为C++类的前向引用。还要检查你实际上没有一个同名C++类。 这个头文件的实现也是.mm吗?因为如果GAMELGIC允许直接访问(属性或返回值)到C++类,则必须这样做。< /P> < P>你做了< /P>

#import "GameLogic.h"
在添加属性的标题中?您还可以添加

@class GameLogic;
但不是

class GameLogic;

因为这会使它成为C++类的前向引用。还要检查你实际上没有一个同名C++类。



这个头文件的实现也是.mm吗?因为如果GAMELGOIC允许直接访问(属性或返回值)到C++类。< /P>为什么这个标记<代码> [C++ ++ ] /代码>?因为.mm文件被编译为C++,并被StAdvExod所建议,我接受它是因为我认为它是合乎逻辑的。请注意,它也被标记为objc,Cocos2d.A.mm文件被编译为objective-c++。啊,是的,我不知道,我无法创建该标记。。。缺乏声誉。而且,这不是向我建议的。但是谢谢编辑。我使用了一个预先存在的标签。为什么这个标签<代码> [C++ ] [/COD]?因为.mm文件被编译成C++,并被StAdvExod所建议,我接受它是因为我认为它是合乎逻辑的。请注意,它也被标记为objc,Cocos2d.A.mm文件被编译为objective-c++。啊,是的,我不知道,我无法创建该标记。。。缺乏声誉。而且,这不是向我建议的。但是谢谢你的编辑。我使用了一个预先存在的标签。是的,我确实试过了。因为我以前试过其他类似的课程。以下消息是我收到的消息。-例如,接收方类型“GameLogic”消息是一个转发声明。没有注意到您所说的标题部分。。。所以通常是在.m处,我需要添加#导入。。。但是由于它也包含C++,所以我需要在H中添加同样的导入,非常有趣。谢谢你解决了我的问题,朋友。只需要问你一个问题@learncos2d
类游戏逻辑之间的区别是什么
@class游戏逻辑类是C++表示C++类的正向声明,@类是Objtovi-C类的正向声明的Objto-C挂件。对于C++类,你会使用“类”和Objy-C类,你会使用“@类”。而且,当你在另一个头文件中使用类对象(C++或Objtovi-C)时,你必须要么导入类的头,要么使用类/@类关键字。否则,编译器将类的名称视为未定义的类型,根据定义,未定义的类型被视为“int”(因此“type here is int*”部分)。是的,我确实尝试过。因为我以前试过其他类似的课程。以下消息是我收到的消息。-例如,接收方类型“GameLogic”消息是一个转发声明。没有注意到您所说的标题部分。。。所以通常是在.m处,我需要添加#导入。。。但是由于它也包含C++,所以我需要在H中添加同样的导入,非常有趣。谢谢你解决了我的问题,朋友。只需要问你一个问题@learncos2d
类游戏逻辑之间的区别是什么
@class游戏逻辑类是C++表示C++类的正向声明,@类是Objtovi-C类的正向声明的Objto-C挂件。对于C++类,你会使用“类”和Objy-C类,你会使用“@类”。而且,当你在另一个头文件中使用类对象(C++或Objtovi-C)时,你必须要么导入类的头,要么使用类/@类关键字。否则,编译器将类的名称视为未定义的类型,根据定义,未定义的类型被视为“int”(因此“type here is int*”部分)。