我正在开发一个跨平台的 C++ 应用程序。在 mac 版本上,我需要在 obj-c 中使用一点可可。因此,我创建了一个名为 OSXSpecifics 的类,它具有 .mm 文件扩展名和一个 c++ 标头,就像应用程序的其余部分一样。
std::string OSXSpecifics::GetOSXFilePath(const char *name, const char *type) {
return [[[NSBundle mainBundle] pathForResource:[NSString stringWithUTF8String: name]
ofType:[NSString stringWithUTF8String: type]] UTF8String];
}
上面的代码绝对完美。c++ 类中的 c++ 函数,函数内部带有 Objective-c。但是当我这样做时:
void OSXSpecifics::printToConsole(<#const char *text#>) {
NSString *Text = [NSString stringWithUTF8String: text];
}
我有几个错误。主要是:variable has incomplete type 'void
。我也得到expected primary expression before '<'token
。而且也很有趣:expected ';' after top level declarator
。这是该类的头文件:
#ifndef OSXSPECIFICS_h
#define OSXSPECIFICS_h
#include <string.h>
class OSXSpecifics
{
public:
static std::string GetOSXFilePath(const char* name, const char* type);
static void printToConsole(const char* text);
};
#endif // OSXSPECIFICS_h
知道为什么 xcode 对 c++ 和客观 c 混合感到恐惧吗?