J'ai une classe C++ 'Expression
' avec une méthode que j'aimerais utiliser dans ma classe Objective-C 'GraphVC
'.Passage d'une méthode C++ à une méthode Objective-C
class Expression {
double evaluate(double);
}
Et ma classe Objective-C:
@implementation GraphVC : UIViewController {
- (void)plot:(double(*)(double))f;
@end
Je pensais que ce serait plus facile de passer autour des pointeurs de fonction qui prennent un double et le retour d'un double, par opposition à des objets C++, mais je n'ont pas eu beaucoup de succès en utilisant functional.h
. Quelle est la meilleure façon d'utiliser ma méthode C++ depuis Objective-C?
EDIT: Merci pour vos réponses rapides. Permettez-moi d'élaborer un peu ... J'ai un backend écrit en C++ où je manipule des objets de type Expression. Il y a des sous-classes pour rationnel, polynomial, monomial, etc. Mon idée initiale était d'utiliser mem_fun, mais je n'ai pas pu obtenir de code de cette façon. J'ai également eu du mal à utiliser bind1st pour lier le pointeur this
.
- Écrire une enveloppe Objective-C est une possibilité, mais je préfère utiliser la fonction
evaluate()
déjà existante, et je ne veux pas briser la séparation nette entre le back-end et les classes GUI iPhone. - Je ne peux pas avoir une expression globale ou utiliser une méthode statique (je dois tracer des instances
Expression
arbitraires.
Je devrais avoir plus explicitement dit que je dois passer une fonction membre C++ (et non statique fonction ou fonction C existante) à un objet Objective-C. Est-ce que quelqu'un a eu de la chance en utilisant <functional>
de C++ pour transformer des fonctions membres en pointeurs que je peux utiliser dans un objet Objective-C, ou devrais-je utiliser un wrapper Objective-C
Je pense qu'il veut passer une fonction à la méthode 'plot:', pas une seule valeur. – dreamlax