1

我试图在头文件中声明函数返回字符串,因为我将从objective-c调用它。基本上这会工作,不是吗?

std::string myFunction();

但它抛出错误消息说“预期';' 在顶级声明符之后”,搜索了很多,每个人都建议将#include放在头文件中,我也尝试过但是它不起作用,这次它抛出另一个错误消息“'string'file not found”。

让另一个函数返回双倍并且没有问题。

double doSomething(double a);

-

#include <string>

不起作用,它抛出错误消息说“'string' file not found”。已尝试创建新项目以防万一我的项目可能被损坏但它不起作用我应该在搜索路径等中放置一些东西吗?

在此处输入图像描述

我终于成功了。 解决方案:在 Build Settings / Apple LLVM Compiler 4.2 下将“Compile Source As”设置更改为Objective-C++,它就像一个魅力。

4

3 回答 3

3

至少,您必须包含 C++ 标准库标头string,其中std::string声明了类(实际上,它是类模板的 typedef,但那是另一回事)。

#include <string>

std::string myFunction();

您还应该确保在自己的标头中使用包含防护。

于 2013-04-07T15:17:49.970 回答
1

你错过了头文件:

  #include <string>
于 2013-04-07T15:18:25.560 回答
1

您必须记住,ObjC 文件是基于 C 而不是 C++ 构建的,如果您想在 Objective-C 中使用 C++ 文件,您需要将 ObjC 文件的扩展名从 .m 更改为 .mm 以使其成为 ObjC++ 文件,或者否则就像试图在 C 文件中包含 C++ 头文件一样。

于 2013-04-07T15:36:58.297 回答