Expression
Objective-Cクラスで使用したいメソッドを持つ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++で記述されたバックエンドがあり、Expression型のオブジェクトを操作します。有理数、多項式、単項式などのサブクラスがあります。私の最初のアイデアは、からmem_funを使用することでしたが、この方法でコードをコンパイルすることはできませんでした。また、bind1stを使用してthis
ポインターをバインドするのにも問題がありました。
- Objective-Cラッパーを作成することも可能ですが、既存の
evaluate()
関数を使用したいので、バックエンドとiPhoneGUIクラスの明確な分離を破りたくありません。 - グローバル式を使用したり、静的メソッドを使用したりすることはできません(任意の
Expression
インスタンスをプロットする必要があります)。
C ++メンバー関数(静的関数や既存のC関数ではない)をObjective-Cオブジェクトに渡す必要があることをより明確に述べる必要があります。誰かがC++を<functional>
使用して、メンバー関数をObjective-Cオブジェクトで使用できるポインターに変換することができましたか?それともObjective-Cラッパーを使用する必要がありますか?