我正在征求Mac/iPhone开发人员对一个新项目的意见。这个想法是使用swig (www.swig.org)启动一个开源计划,自动生成从objective c到c++的桥梁,这样人们就可以通过可可/可可触摸访问c++应用程序。
苹果通过objective c++为混合objective C和c++提供了非常好的支持,但手工编写这些桥可能会很繁琐,而且容易出现错误。这个项目打算做的是提供一种在c++上自动生成objective C接口和包装器的方法,以便任何cocoa或cocoa touch应用程序碰巧看到下面带有c++的面向对象的objective C接口。
我非常感谢对这个想法的任何意见或建议。
发布于 2009-04-02 04:25:51
我认为这是没有必要的。使用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的对象模型不支持多重继承和运算符重载。
发布于 2009-04-02 04:17:22
我认为这是一个足够好的想法,如果这样的东西还不存在,我会感到惊讶。另一方面,因为您可以直接编译C++ (看看.mm扩展给您提供了什么),所以它可能有些微不足道。
https://stackoverflow.com/questions/708257
复制相似问题