gpt4 book ai didi

c++ - 类中的 fstream 语法

转载 作者:行者123 更新时间:2023-11-30 03:53:44 26 4
gpt4 key购买 nike

这是我的学生类(class)。函数 static int readRecord(fstream &, Student s[]);:

#ifndef STUDENT_H
#define STUDENT_H
#include <fstream>
class Student
{
public:
Student();
Student(char* n, int g[]);
char* getName();
void setName(char* n);
void setGrade(int g[]);
double getGradesAverage();
static int readRecord(fstream &, Student s[]);
static void display(Student s[], int students);
static void sort(Student s[], int students);

private:

char name[30];
int grades[5];

};


#endif

在我的 cpp 中我有这个:

int Student::readRecord(fstream & in, Student s[])

{

int j = 0;

if (!in)

{
cout << "cannot open the file or file does not exists\n";
exit(0);
}

else

{
char name[30];
int g[5];
char ch;
while (in)

{
in >> name;
for (int i = 0; i<5; i++)
{
in >> g[i];
if (i != 4)
in >> ch;
}

s[j].setName(name);
s[j].setGrade(g);
j++;

}
}

return j - 1;

}

我得到这个编译器错误:

error C2061: syntax error : identifier 'fstream'

error C2511: 'int Student::readRecord(std::fstream &,Student [])' : overloaded member function not found in 'Student'

最佳答案

#ifndef STUDENT_H
#define STUDENT_H
#include <fstream>

class Student
{
public:

Student();
Student(char* n, int g[]);
char* getName();
void setName(char* n);
void setGrade(int g[]);
double getGradesAverage();
static int readRecord(std::fstream &file, Student s[]);
static void display(Student s[], int students);
static void sort(Student s[], int students);

private:

char name[30];
int grades[5];

};

如果您不使用 using namespace std,则必须使用 std::fstream

不过,更好的选择是using std::fstream 而不是using namespace std

我看到的另一个问题是您忘记为 fstream 对象声明一个名称。

static int readRecord(std::fstream &file, Student s[]); 
// ^^^ ^^^^^

此外,由于您使用的是 C++,因此不应再对字符串使用 char 数组,而应使用 std::string

我通常会用 std::vector 替换所有数组内容。

关于c++ - 类中的 fstream 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29976913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com