У меня есть функция, которую я хочу объявить и использовать в типичном стиле C++ в классе.
Определение гипотетического примера из файла.mm:
float MyClass::getRectArea(float width, float height){
return width*height;
}
Как я могу объявить эту функцию в файле заголовка/файле класса Object-C?
@interface MyClass
//???
@end
Вы можете просто написать его как функцию, как и в C++ - только это не будет частью класса, потому что функции не являются частью классов в Objective-C. Если вы хотите, чтобы это было частью класса, вы можете сделать его методом класса в соответствии с:
+ (float)rectAreaWithWidth:(float)width height:(float)height {
return width * height;
}
Я бы, вероятно, не сделал его методом экземпляра, как это предлагается в другом ответе, потому что он действительно не имеет ничего общего с конкретным значением объекта - это чистая функция его аргументов.
Вы можете объявить это как
-(float)getRectArea:(float)width getheight:(float)height;
Затем в файле.m вы можете определить его как
-(float)getRectArea:(float)width getheight:(float)height {
return width*height;
}
Вы можете назвать это следующим образом
float area = [self getRectArea:5.0 getheight:4.0];
Для получения дополнительной информации и объяснения см. Синтаксис метода в Objective C
Если вы хотите, чтобы MyClass был объектом C++, вы должны создать заголовок, как обычно, с C++.
MyClass.h
class MyClass
{
public:
float getRectArea(float width, float height);
};