繁体   English   中英

C ++结构和类编译器错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM