C++调用堆上的类(空字符串错误)

Calling classes on the heap (null string error) C++

本文关键字:字符串 错误 调用 C++      更新时间:2023-10-16

我有一个课堂项目,我把一个可爱的50名学生名单放在堆上,然后打印,排序,重新打印。为此,我必须使用 OOP,这没什么大不了的,但我正在努力将我的基本数据类连接到它们的父类。我在代码编译的地方有它,但给了我一个空字符串的logic_error。不知道为什么。开始拿出任何空类,现在它又对我大喊犯规了。我正在使用的代码有点大,所以我将放入一个工作数据类,然后我试图获得的类使用其他类和主文件,所以请耐心等待我在这里......

-数据类,按预期工作

.h
class Academics
{
    private:
        string GPA;
        string credits;
    public:
        Academics();
        Academics(string GPA, string credits);
        string getAcademics();
};
.cpp begins
Academics::Academics()
{
    Academics::GPA = "";
    Academics::credits = "";
}
Academics::Academics(string GPA, string credits)
{
    Academics::GPA = GPA;
    Academics::credits = credits;
}
string Academics::getAcademics()
{
    stringstream ssAcad;
    ssAcad << GPA << endl << credits << endl;
    return ssAcad.str();
}

-调用方类,不起作用

.h
class Student
{
    private:
        Name name;
        Address address;
        Academics academics;
        Date dob;
        Date doc;
    public:
        Student();
        Student(Name name, Address address, Date dob,
                Date doc, Academics academics);
        string getStudent();
};
.cpp begins
Student::Student()
{
    Student::name = Name("Oscar", "Grouch");
    Student::address = Address("123 Sesame Street","Trash Can","New York","NY","10128");
    Student::academics = Academics("4.00", "120");
    Student::doc = Date("05","21","1993");
    Student::dob = Date("06","01","1969");
}
Student::Student(Name name, Address address, Date dob, Date doc, Academics academics)
{
    Student::name = name;
    Student::address = address;
    Student::dob = dob;
    Student::doc = doc;
    Student::academics = academics;
}
string Student::getStudent()
{
    name.getName();
    address.getAddress();
    dob.getDate();
    doc.getDate();
    academics.getAcademics();
}

-主要

int main ()
{
Student student = Student();
cout << student.getStudent() << endl;
return(0);
}

非常感谢任何帮助或见解,我需要在哪里寻找

您的函数Student::getString()没有 return 语句,但声明为返回一个字符串。

尝试添加 return name.getName(); 或类似内容以开始使用调试。