0

我正在为 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 文件。

知道为什么会这样吗?

提前谢谢。

4

1 回答 1

0

您可以尝试在 NSImageWrapper.h 中导入 NSImageExtras.h 而不是 NSImageWrapper.mm。您需要在头文件中包含子类头。

于 2013-04-18T10:08:03.980 回答