Я пишу оболочку 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 в мой импорт.
Есть идеи, почему это происходит?
Спасибо вперед.
Вы можете попробовать импортировать NSImageExtras.h в NSImageWrapper.h вместо NSImageWrapper.mm. Вы должны включить заголовки подкласса в файлы заголовка.
Других решений пока нет …