在堆上调用类(空字符串错误)C++
Posted
技术标签:
【中文标题】在堆上调用类(空字符串错误)C++【英文标题】:Calling classes on the heap (null string error) C++ 【发布时间】:2015-03-13 02:52:05 【问题描述】:我有一个班级项目,我要列出 50 名学生的可爱名单,将他们放在堆上,然后打印、排序、重印。 我必须为此使用 OOP,这并不是什么大不了的事,但我正在努力将我的基础数据类连接到它们的父类。 我在代码编译的地方有它,但是给了我一个空字符串的逻辑错误。不知道为什么。开始取消任何空课程,现在它又对我大喊大叫了。 我正在使用的代码有点庞大,所以我将放入其中一个工作数据类,然后放入我试图使用其他类和主文件的类,所以请耐心等待这里...
-数据类,按预期工作
.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);
非常感谢您对我需要查看的位置的任何帮助或见解
【问题讨论】:
第一个代码块应该是两个不同的文件吗? (Academics.h 和 Academics.cpp_ 不要转储所有代码,而是尝试生成MCVE。没有人愿意翻阅一页又一页的东西。如果某些部分“按预期工作”,则不需要包含它,请将其取出(并确保其余部分仍可编译、运行并给出错误) 是的,Academics.h 和 Academics.cpp 都在一起,Students.h 和 Students.cpp 也是如此。我认为将它们阻止在一起会更容易,但如果你愿意,可以改变它。而且我并没有倾倒所有……我确实尽量减少了。我可以编辑出包含等,但仅此而已。少一点,一切都会破裂。还有另外 300 行未显示... 也尝试调试您的代码。然后就可以看到逻辑错误是从哪里来的 【参考方案1】:您的函数Student::getString()
没有返回语句,但被声明为返回一个字符串。
尝试添加return name.getName();
或类似的内容以开始调试。
【讨论】:
我总是想念一些小事,让我花几个小时把头撞在墙上……现在我正在返回值而不是让计算机坐下来思考,不再出现空错误...以上是关于在堆上调用类(空字符串错误)C++的主要内容,如果未能解决你的问题,请参考以下文章