gpt4 book ai didi

iphone - 将 C++ 对象添加到 Objective-C 类

转载 作者:IT老高 更新时间:2023-10-28 22:01:20 24 4
gpt4 key购买 nike

我正在尝试混合使用 C++ 和 Objective-C,我已经完成了大部分工作,但希望在 Objective-C 和 C++ 代码之间有一个单一的接口(interface)类。因此,我想在 ViewController 接口(interface)中有一个持久的 C++ 对象。

这会因为禁止声明没有类型的“myCppFile”而失败:

#import <UIKit/UIKit.h>
#import "GLView.h"
#import "myCppFile.h"

@interface GLViewController : UIViewController <GLViewDelegate>
{
myCppFile cppobject;
}

@end

但是这在 .mm 实现文件中工作得很好(它不起作用,因为我希望 cppobject 在调用之间保持不变)

#import "myCppFile.h"
@implementation GLViewController
- (void)drawView:(UIView *)theView
{
myCppFile cppobject;
cppobject.draw();
}

最佳答案

您应该使用 opaque pointers并且只在实现您的 Objective-C 类的文件中包含 C++ 头文件。这样您就不会强制包含 header 的其他文件使用 Objective-C++:

// header:
#import <UIKit/UIKit.h>
#import "GLView.h"

struct Opaque;

@interface GLViewController : UIViewController <GLViewDelegate>
{
struct Opaque* opaque;
}
// ...
@end

// source file:
#import "myCppFile.h"

struct Opaque {
myCppFile cppobject;
};

@implementation GLViewController
// ... create opaque member on initialization

- (void)foo
{
opaque->cppobject.doSomething();
}
@end

关于iphone - 将 C++ 对象添加到 Objective-C 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2262011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com