我有一个 C++ 类“ Expression
”,其中包含我想在我的 Objective-C 类“ GraphVC
”中使用的方法。
class Expression {
double evaluate(double);
}
还有我的 Objective-C 类:
@implementation GraphVC : UIViewController {
- (void)plot:(double(*)(double))f;
@end
我认为与 C++ 对象相反,传递接受 double 并返回 double 的函数指针是最简单的,但我在使用functional.h
. 从 Objective-C 使用我的 C++ 方法的最佳方式是什么?
编辑:感谢您的快速回复。请允许我详细说明一下...我有一个用 C++ 编写的后端,我在其中操作表达式类型的对象。有理数、多项式、单项式等的子类。我最初的想法是使用mem_fun from ,但我无法以这种方式编译代码。我在使用 bind1st 绑定this
指针时也遇到了麻烦。
- 编写一个 Objective-C 包装器是可能的,但我宁愿使用已经存在的
evaluate()
函数,而且我不想破坏后端和 iPhone GUI 类之间的清晰分离。 - 我不能有全局表达式或使用静态方法(我需要绘制任意
Expression
实例。
我应该更明确地说明我需要将 C++ 成员函数(不是静态函数或现有 C 函数)传递给 Objective-C 对象。有没有人幸运地使用 C++<functional>
将成员函数转换为可以在 Objective-C 对象中使用的指针,或者我应该使用 Objective-C 包装器?