我有这个头文件,zeeheader.h,我在其中写了一些类,我在将字符串作为参数给其中一个函数时遇到了问题:
class DeliTest
{
public:
void DeliCheck(Stack*,string);
void ComCheck (unsigned,string);
bool EofCheck (unsigned,string);
};
Run Code Online (Sandbox Code Playgroud)
当我在cpp文件中实现它时,我添加了#include,它似乎正在工作,例如:因为我正在编写"数据".我得到了intellisense出现的"length()",所以我认为它有效,但事实并非如此.我得到的错误如下:
语法错误:'DeliTest'中找不到标识符'string'重载的成员函数
这是cpp文件中的一个函数:
bool DeliTest::EofCheck(unsigned i, string data)
{
if (i == data.length()-1)
return 1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我应该在头文件中添加一些内容吗?
小智 7
在头文件中,您需要:
#include <string>
Run Code Online (Sandbox Code Playgroud)
字符串存在于std:; 命名空间,所以你的函数应该是这样的:
void DeliCheck(Stack*, std::string);
Run Code Online (Sandbox Code Playgroud)
虽然按值传递字符串并没有错,但正如您所做的那样,通过const引用传递它们是更常见和更好的做法:
void DeliCheck(Stack*, const std::string & );
Run Code Online (Sandbox Code Playgroud)