首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Objective C到C++桥的自动代码生成

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

Stack Overflow用户
提问于 2009-04-02 04:06:52
回答 2查看 1.7K关注 0票数 5

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

苹果通过objective c++为混合objective C和c++提供了非常好的支持,但手工编写这些桥可能会很繁琐,而且容易出现错误。这个项目打算做的是提供一种在c++上自动生成objective C接口和包装器的方法,以便任何cocoa或cocoa touch应用程序碰巧看到下面带有c++的面向对象的objective C接口。

我非常感谢对这个想法的任何意见或建议。

EN

回答 2

Stack Overflow用户

发布于 2009-04-02 04:25:51

我认为这是没有必要的。使用Objective-C++,您根本不需要桥。给定一个定义的C++类

代码语言:javascript
复制
class Foo {
  public:
    void someMethod(void);
}

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

代码语言:javascript
复制
- (void)myObjCMethod {
  Foo myFoo;

  myFoo.someMethod();

  //etc.
}

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

代码语言:javascript
复制
@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的对象模型不支持多重继承和运算符重载。

票数 4
EN

Stack Overflow用户

发布于 2009-04-02 04:17:22

我认为这是一个足够好的想法,如果这样的东西还不存在,我会感到惊讶。另一方面,因为您可以直接编译C++ (看看.mm扩展给您提供了什么),所以它可能有些微不足道。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/708257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档