[英]C++ Struct and Class Compiler Errors
我遇到的两个主要错误是:
无需使用new-initializer的“ new”在“ struct node”中的未初始化引用成员。
和
请求'((score *)this-> score :: sInfoHEAD''中的成员'a_student',它是非类类型'node'。
我的.cpp文件是:
#include "CS163Program1.h"
using namespace std;
score::score()
{
sInfoHEAD = '\0';
profHEAD = '\0';
}
score::~score()
{
delete sInfoHEAD;
delete profHEAD;
}
int score::insertEntry(studentInfo a_student)
{
if(!sInfoHEAD)
{
sInfoHEAD = new node;
sInfoHEAD -> a_student = new studentInfo;
sInfoHEAD.a_student -> firstName = new char[strlen(a_student.firstName)+1];
strcpy(firstName, a_student.firstName);
sInfoHEAD.a_student -> lastName = new char[strlen(a_student.lastName)+1];
strcpy(lastName, a_student.lastName);
sInfoHEAD.a_student -> program1_grade = a_student.program1_grade;
sInfoHEAD.a_student -> program2_grade = a_student.program2_grade;
sInfoHEAD.a_student -> program3_grade = a_student.program3_grade;
sInfoHEAD.a_student -> program4_grade = a_student.program4_grade;
sInfoHEAD.a_student -> program5_grade = a_student.program5_grade;
sInfoHEAD.a_student -> midterm_grade = a_student.midterm_grade;
sInfoHEAD.a_student -> final_grade = a_student.final_grade;
sInfoHEAD.a_student -> labAttendance = a_student.labAttendance;
sInfoHEAD -> next = NULL;
}
}
我的.h文件是:
#include <iostream>
#include <cstring>
#include <cctype>
using namespace std;
struct studentInfo
{
char * firstName;
char * lastName;
int program1_grade;
int program2_grade;
int program3_grade;
int program4_grade;
int program5_grade;
int midterm_grade;
int final_grade;
int labAttendance;
int total_grade;
};
class score
{
public:
score();
~score();
int insertEntry(const studentInfo entry_name);
int updateEntry(const studentInfo entry_name);
int displayAll();
int displaySpecific(profDemo proficiency);
int evaluate(profDemo proficiency);
int buildTestStruct(const studentInfo & a_student);
private:
node * sInfoHEAD;
node * profHEAD;
};
任何帮助将不胜感激,我已经开始了3个小时,而且还不知道如何解决。
您的struct node
似乎有一个引用成员,例如:
struct node
{
int& num;
};
该成员应在构造函数的initializer-list中初始化。 (引用不能为空...)
struct node
{
node( int& iNum ) : num( iNum ) {}
int& num;
};
另外,您正在访问一个指针,就像它是一个值一样:
sInfoHEAD.a_student -> firstName
应该 :
sInfoHEAD->a_student -> firstName
// ^^
最后,当您将对象作为参数传递时,请尽可能尝试将它们作为引用或const
引用传递:
int insertEntry(const studentInfo entry_name);
应该变成:
int insertEntry(const studentInfo& entry_name);
// ^
而且,就像我在评论中说的那样: using namespace std;
在头文件中不是一个好习惯。 您可以阅读以下内容: https : //stackoverflow.com/a/5849668/1394283
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.