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