【问题标题】:Objective-C - Creating a wrapper file for C++ functions?Objective-C - 为 C++ 函数创建一个包装文件?
【发布时间】:2013-10-30 23:38:13
【问题描述】:

我将为我的 Objective-C 代码编写大量 C++ 函数(由于第三方函数)。而且我认为通过在 Objective-C 代码和 C++ 代码之间有一个中间的 Objective-C++ 文件包装器来抽象出 C++ 代码可能是一个好主意。我目前拥有的布局是 ViewController.m 文件,它创建了我的包装器 Objective-C++ 类的实例。此类调用它的实例方法,这些方法又调用 C++ 代码。下面给出了一个简单的版本。这是一个不好的方法吗?有没有更合适的方法来解决这个问题?对代码的任何其他批评?非常感谢!

ViewController.m

#import "ViewController.h"
#import "CppWrapper.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    CppWrapper *wrap = [[CppWrapper alloc] init];
    double n = 5;
    n = [wrap cppTimesTwo:n];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

@end

CppWrapper.mm

#import "CppWrapper.h"
#import "Cpp.h"

@implementation CppWrapper

- (double)cppTimesTwo:(double) number
{
    return timesTwo(number);
}

@end

Cpp.cpp

#include "Cpp.h"

double timesTwo(double number)
{
    return 2 * number;
}

【问题讨论】:

  • 只要确保您的 .h 文件不包含任何 C++ 代码
  • @BryanChen:哪个 .h 文件?
  • .m 文件使用的所有 .h 文件。在这种情况下,CppWrapper.h

标签: c++ objective-c c wrapper


【解决方案1】:

我们在一个项目中做了同样的事情来重用一些 C 源代码,而且效果很好。我认为这是一个很好的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 2010-09-22
    相关资源
    最近更新 更多