我正在研究一个项目,我有三个头文件,每个头文件定义一个单独的结构,其中有一些用于访问变量的函数,这是学生结构的一个例子:
#include<string.h>
//using namespace std;
struct student
{
int studentId;
string fname;
string lname;
};
void SetId(student * stu,int id)
{
stu->studentId=id;
}
void SetFirstName(student * stu,string name)
{
stu->fname=name;
}
void SetLastName(student * stu,string name)
{
stu->lname=name;
}
int GetId(student * stu)
{
return stu->studentId;
}
string GetFirstName(student * stu)
{
return stu->fname;
}
string GetLastName(student * stu)
{
return stu->lname;
}
当我编译这个文件时,我得到两个错误: 1. [错误]未知类型名称'string' 2. [错误]未知类型名称'学生'
答案 0 :(得分:1)
将string
替换为std::string
。
你做了好事并摆脱了侵扰性的using namespace std;
。
最后,为什么不让student
类的“全局函数”成员呢?那你就不需要那个student*
指针。 C ++不是你知道的。
答案 1 :(得分:0)
由于您使用的是C ++,因此应避免包含.h
标头。在C ++中有<string>
标题来操纵字符串,所以使用它。
然后,您评论了using namespace std
,这是一个很好的做法。见here为什么。但是现在你需要指定属于哪个命名空间字符串对象,所以有必要明确地写std::string
而不是string
。
最后,我引用@Bathsheba的回答。你应该创建一个班级学生。