相关疑难解决方法(0)

在 Objective - C 中使用 C++ 类

我正在尝试在我的 Objective-C 代码中为 iPhone 应用程序使用一些 C++ 类。我只是想声明 C++ 对象,但遇到了问题。尽管我在想要使用它的 Objective-C 类中声明了 C++ 头文件,但我的 Objective-C 似乎无法识别 C++ 对象。这是我的 Objective-C 代码:

 //implementation file
#import "CPPClass.h"

@implementation MyViewController
- (void) viewDidLoad
{
    CPPClass object;
}
Run Code Online (Sandbox Code Playgroud)

但我收到“使用未声明的标识符‘CPPClass’”警告。

我该怎么做?

c++ iphone objective-c

3
推荐指数
1
解决办法
2543
查看次数

#import不能防止循环呼叫?

我有两个类ClassA和Class B(它们是viewControllers).
A类是classB的委托.
ClassA"laucnhes"和ClassB的实例.
classA上的ClassB调用方法.

让我们说它是:

#import "ClassB.h"

@interface ClassA : NSObject {
    ClassB* subController;
}

- (void) doThis;

-------------------------------

#import "ClassA.h"

@interface ClassB : NSObject {
    ClassA* delegate;
}

-------------------------------

@implementation ClassB

- (void) someMethod {
   AnObject* myObj = [self.delegate.arr objectAtIndex:8];
   [self.delegate doThis];
}
Run Code Online (Sandbox Code Playgroud)

这样做,A必须导入B,B必须导入A.

如果B不导入A(仅使用@class A),则来自A的used属性存在编译错误.
如果B导入A,则该ClassA* delegate行上存在编译错误.

为什么我有这些编译错误?#import不会再次保护递归调用吗?

我不需要解决方案来解决这个问题,我知道如何做到这一点.
但我想知道为什么我的#import会导致这些问题.这些不是#includes ......

import header objective-c include

2
推荐指数
2
解决办法
1559
查看次数

未知的类型名称

我的.h文件:

#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "GameData.h"
#import "PROBattleScene.h"

@interface PROBattleAI : NSObject {
    BattleType type;
    PROBattleScene *scene;
}

-(id)initWithType:(BattleType)_type andBattleInformation:(NSMutableDictionary*)_information andScene:(PROBattleScene*)_scene;
-(void)dealloc;
@end
Run Code Online (Sandbox Code Playgroud)

但是在线上PROBattleScene *scene;我从Xcode获得了未知类型名称错误.

我在这里尝试了答案:xcode未知的类型名称,但我已经这样做了(并且不起作用).

为什么会这样?我已经导入了我的PROBattleScene.h文件,为什么不被识别?

编辑:和PROBattleScene.h要求的内容:

#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "GameData.h"
#import "SimpleAudioEngine.h"

#import "PROBattleBackground.h"
#import "PROBattleAI.h"

@interface PROBattleScene : CCLayer {
    NSMutableDictionary *battleInformation;
    NSMutableArray *localPlayerPartyData;

    PROBattleBackground *background;

    CCNode *base;

    PROBattleAI *enemyAI;
}
+(CCScene*)scene;
-(id)init;
-(void)loadBattleInformation;
-(void)loadBGM;
-(void)loadBackground;
-(void)loadBase;
-(void)loadEnemyAI;
-(void)beginBattle;

@end
Run Code Online (Sandbox Code Playgroud)

xcode objective-c cocos2d-iphone ios

2
推荐指数
1
解决办法
7714
查看次数

单个头文件,包含所有其他头文件?

从面向对象的角度来看(主要是C++和Objective C),

将项目中使用的所有头文件包含在单个(.h)中是一个很好的编程习惯,只需在所有实现文件中包含此头文件以及(右)使用"header guard"和"#pragma once" "(或#import)?

这可能是什么负面影响?

c++ oop objective-c header-files

1
推荐指数
1
解决办法
805
查看次数

标签 统计

objective-c ×4

c++ ×2

cocos2d-iphone ×1

header ×1

header-files ×1

import ×1

include ×1

ios ×1

iphone ×1

oop ×1

xcode ×1