У меня есть класс C++ «Expression
» с использованием метода, который я хотел бы использовать в моем классе Objective-C «GraphVC
».Передача метода C++ методу Objective-C
class Expression {
double evaluate(double);
}
И мой Objective-C класс:
@implementation GraphVC : UIViewController {
- (void)plot:(double(*)(double))f;
@end
Я подумал, что было бы проще обойти указатели на функции, которые имеют двойные и возвращение двойные, в отличие от C++ объектов, но я не имели большого успеха, используя functional.h
. Каков наилучший способ использования моего метода C++ из Objective-C?
EDIT: Спасибо за ваши быстрые ответы. Позвольте мне немного уточнить ... У меня есть бэкэнд, написанный на C++, где я манипулирую объектами типа Expression. Есть подклассы для рационального, полиномиального, одночленного и т. Д. Моя первоначальная идея заключалась в использовании mem_fun, но я не смог получить компиляцию кода таким образом. У меня также возникли проблемы с использованием bind1st для привязки указателя this
.
- Пишем Objective-C обертку возможности, но я предпочел бы использовать уже существующую
evaluate()
функции, и я не хочу, чтобы разорвать четкое разделение между серверным и классами iPhone GUI. - Я не могу иметь глобальное выражение или использовать статический метод (мне нужно построить произвольные
Expression
экземпляров.
я должен более четко указано, что мне нужно передать ++ функцию-член C (не статический функции или существующей функции C) объекту Object-C. Кому-то повезло с использованием <functional>
C++ для включения функций-членов в указатели, которые я могу использовать в объекте Objective-C, или я должен использовать обертку Objective-C?
Я думаю, что он хочет передать функцию методу 'plot:', а не одному значению. – dreamlax