Добавление функций в существующий класс Objective C вызывает ошибку

Я пишу оболочку C ++ для класса NSImage, и у меня возникают проблемы с дополнительными функциями, которые я написал. Вот краткое резюме:

NSImageExtras.h

@interface NSImage (MyExtensions)
-(NSString*) myExtraFunction;
@end

NSImageExtras.mm

#import "NSImageExtras.h"
@implementation NSImage (MyExtensions)
-(NSString*) myExtraFunction
{
return @"Hello World";
}
@end

NSImageWrapper.h

class NSImageWrapper
{
public:
// nsImage is of type (NSImage*)
NSImageWrapper(void* nsImage) {myImage = nsImage;}
~NSImageWrapper() {}

CFStringRef myExtraFunction();

// Cast this into (NSImage*)
void* getNSImage() {return myImage;}

private:
void* myImage;
};

NSImageWrapper.mm

#include "NSImageWrapper.h"#import "NSImageExtras.h"
CFStringRef NSImageWrapper::myExtraFunction()
{
return (CFStringRef) [(NSImage*) myImage myExtraFunction];
}

Это компилируется. Но когда я пытаюсь позвонить myExtraFunction возникает ошибка, потому что функция не найдена. Если я изменю import "NSImageExtra.h" в import "NSImageExtra.m" тогда это работает, но я бы предпочел избегать добавления файлов .m в мой импорт.

Есть идеи, почему это происходит?

Спасибо вперед.

0

Решение

Вы можете попробовать импортировать NSImageExtras.h в NSImageWrapper.h вместо NSImageWrapper.mm. Вы должны включить заголовки подкласса в файлы заголовка.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector