Ошибки компилятора структуры и класса C ++

Две большие ошибки, которые я получаю:

неинициализированный ссылочный член в ‘struct node’, использующий ‘new’ без new-initializer.

а также

запрос на член ‘a_student’ в ‘((оценка *) this-> score :: sInfoHEAD’, который имеет неклассовый тип ‘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 часа и не знаю, как это исправить.

0

Решение

Ваш struct node Кажется, есть ссылка на член, как:

struct node
{
int& num;
};

Этот член должен быть инициализирован в списке инициализаторов в конструкторе. (ссылка не может быть нулевой …)

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

4

Другие решения