C++中函数返回字符串的声明

C++中函数返回字符串的声明,c++,objective-c,string,function,C++,Objective C,String,Function,我试图在头文件中声明返回字符串的函数,因为我将从objective-c调用它。基本上这是可行的,不是吗 std::string myFunction(); 但它抛出的错误消息是预期的“;”在顶级声明程序之后,搜索了很多次,每个人都建议将include放在头文件中,我也尝试了,但是它不起作用,这次它抛出另一个错误消息“string”file not found 让另一个函数返回double并且没有问题 double doSomething(double a); - 不起作用。它正在抛出错误消息

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

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

让另一个函数返回double并且没有问题

double doSomething(double a);
-

不起作用。它正在抛出错误消息,表示找不到“字符串”文件。试图创建一个新的项目,以防我的项目可能会被损坏,但它不工作,我应该把一些东西在搜索路径等

我终于成功了。
解决方案:在编译设置/Apple LLVM编译器4.2下将编译源更改为ObjtoVC++,它工作得像一个符咒。

至少,你必须包括C++标准库头,在这里,类STD::String实际上是声明的,它是类模板的Type,但这是另一回事。

#include <string>

std::string myFunction();

您也应该确保在自己的头中使用.

至少,您必须包括C++标准库头,其中在实际中声明类STD::String,它是类模板的Type,但这是另一回事。

#include <string>

std::string myFunction();

您还应确保在自己的头文件中使用。

您错过了头文件:

  #include <string>

您错过了头文件:

  #include <string>

<>你必须记住Objc文件是在C而不是C++上构建的,如果你想在Objtovi-C中使用C++文件,你需要将Objc文件的扩展从M到.mm改变成Objc++文件,否则就好像试图在C++文件中包含C++头。如果您想在Objtovi-C中使用C++文件,则需要将Objc文件的扩展名从.m更改为.mm,以使其成为Objc++文件,否则,它会像试图在C文件中包含C++头。

你能告诉我们你的尝试包含吗?如果你的编译器没有找到,那么你要么不使用C++编译器,例如GCC可以根据它的参数表现得像纯C编译器,或者你有错误的安装或错误配置你的IDE。在您的计算机上手动查找没有文件名后缀的文件字符串,并检查IDE中配置的include文件路径。ifdef\uuu cplusplus extern C。。。。。工作,这就是为什么假设它不是编译器的问题。但是我注意到了一些事情。如果它是纯C++项目,则不存在问题,当我将C++头连接到Obj-C时,它会开始抛出错误。你能告诉我们你的尝试包含吗?如果你的编译器没有找到,那么你要么就不用C++编译器,GCC就可以根据它的参数来表现出纯C编译器的特性。或者您的IDE安装错误或配置错误。在您的计算机上手动查找没有文件名后缀的文件字符串,并检查IDE中配置的include文件路径。ifdef\uuu cplusplus extern C。。。。。工作,这就是为什么假设它不是编译器的问题。但是我注意到了一些事情。如果是纯C++项目没有问题,当我把C++头连接到Obj-C时,它就开始抛出有关的错误。