我正在为NSImage类编写C ++包装器,我在编写附加功能时遇到了麻烦。以下是简要总结:
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 :(得分:0)
您可以尝试在NSImageWrapper.h中导入NSImageExtras.h而不是NSImageWrapper.mm。您需要在头文件中包含子类标题。