gpt4 book ai didi

c++ - Objective C 到 C++ 桥的自动代码生成

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:32:28 25 4
gpt4 key购买 nike

我正在征求 Mac/iPhone 开发人员对新项目的意见。我们的想法是启动一项使用 swig (www.swig.org) 自动生成从 objective-c 到 c++ 的桥梁的开源计划,以便人们可以从 cocoa/cocoa touch 访问 c++ 应用程序。

Apple 为通过 objective c++ 混合 objective c 和 c++ 提供了很好的支持,但是手动编写这些桥接可能很乏味且容易出错。这个项目打算做的是提供一种自动生成 objective-c 接口(interface)和 c++ 包装器的方法,以便任何 cocoa 或 cocoa touch 应用程序碰巧看到下面是 c++ 的面向对象的 objective-c 接口(interface)。

如果有任何关于这个想法的意见或建议,我将不胜感激。

最佳答案

我觉得没必要。使用 Objective-C++,你根本不需要桥。给定一个定义的 C++ 类

class Foo {
public:
void someMethod(void);
}

您可以在 Objective-C++ 代码中的任何地方使用该类。例如,在一个方法中:

- (void)myObjCMethod {
Foo myFoo;

myFoo.someMethod();

//etc.
}

您可以拥有指向 C++ 类的实例变量,因此您可以定义一个 Objective-C 类,例如

@interface Bar : NSObject {
Foo *foo;
}

@property (assign) Foo * foo;
@end

@implementation
@synthesize foo;

- (void)dalloc {
delete foo;
[super dealloc];
}

- (id)init {
if(self = [super init]) {
foo = new Foo();
}

return self;
}

- (void)aMethod {
self.foo->barMethod();
}

我不认为您可以模板化 Objective-C 方法,但 Objective-C++ 中的 C++ 模板实例化是公平的游戏。正如 Objective-C 是 C 的严格超集一样,Objective-C++ 是 C++ 的超集,添加了 Objective-C 风格的类和消息传递。

如果您确实想“桥接”一个 C++ 类,通常您会遇到麻烦,因为 Objective-C 的对象模型不支持诸如多重继承和运算符重载之类的事情。

关于c++ - Objective C 到 C++ 桥的自动代码生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/708257/

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