Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+多态性载体+; 我试图在C++语言中进行多态性。我的父类是Person,然后有一个派生类叫做Student。这是我的个人.h和.cpp: class Person { public: Person(string name); virtual void display() const; string get_name() const; void set_name(string name); string get_birthDay() const; void set_birthDay(string birthDay); private: string name; string birthDay; }; class Student : public Person { public: Student(string name, string major); virtual void display() const; string get_major() const; void set_major(string major); private: string major; };_C++_Pointers_Vector_Polymorphism - Fatal编程技术网

C+多态性载体+; 我试图在C++语言中进行多态性。我的父类是Person,然后有一个派生类叫做Student。这是我的个人.h和.cpp: class Person { public: Person(string name); virtual void display() const; string get_name() const; void set_name(string name); string get_birthDay() const; void set_birthDay(string birthDay); private: string name; string birthDay; }; class Student : public Person { public: Student(string name, string major); virtual void display() const; string get_major() const; void set_major(string major); private: string major; };

C+多态性载体+; 我试图在C++语言中进行多态性。我的父类是Person,然后有一个派生类叫做Student。这是我的个人.h和.cpp: class Person { public: Person(string name); virtual void display() const; string get_name() const; void set_name(string name); string get_birthDay() const; void set_birthDay(string birthDay); private: string name; string birthDay; }; class Student : public Person { public: Student(string name, string major); virtual void display() const; string get_major() const; void set_major(string major); private: string major; };,c++,pointers,vector,polymorphism,C++,Pointers,Vector,Polymorphism,.cpp: .cpp: Student::Student(字符串名称,字符串专业) :人(姓名) { 这个->专业=专业; } 字符串Student::get_major()常量 { 返回专业; } 无效学生::设置_专业(字符串专业) { 这个->专业=专业; } void Student::display()常量 { cout您的人员列表存储指针,但您按下了对象: 要解决您的问题,请执行以下操作: person_list.push_back(new Student("Student","IT

.cpp:

.cpp:

Student::Student(字符串名称,字符串专业)
:人(姓名)
{
这个->专业=专业;
}
字符串Student::get_major()常量
{
返回专业;
}
无效学生::设置_专业(字符串专业)
{
这个->专业=专业;
}
void Student::display()常量
{

cout您的人员列表存储指针,但您按下了对象:

要解决您的问题,请执行以下操作:

person_list.push_back(new Student("Student","IT"));
                    //^^^^               
person_list.push_back(new Instructor("Instrructor", 2500));
要在STL容器中存储指针,最好使用智能指针:

#include <memory>
std::vector <std::unique_ptr<Person>> person_list;
#包括
std::矢量人_列表;

您的人员列表存储指针,但您按下了对象:

要解决您的问题,请执行以下操作:

person_list.push_back(new Student("Student","IT"));
                    //^^^^               
person_list.push_back(new Instructor("Instrructor", 2500));
要在STL容器中存储指针,最好使用智能指针:

#include <memory>
std::vector <std::unique_ptr<Person>> person_list;
#包括
std::矢量人_列表;

您需要向后推一个指向学生的指针;即使用

人员列表。向后推(新学生(“学生”、“IT”);

但是您需要非常小心地使用内存,因为您需要删除已分配的内存;向量在销毁时不会为您执行此操作


考虑改用智能指针。

您需要将指针推回学生;即使用

人员列表。向后推(新学生(“学生”、“IT”);

但是您需要非常小心地使用内存,因为您需要删除已分配的内存;向量在销毁时不会为您执行此操作


考虑改用智能指针。

cout-display()
cout-display(),我以前尝试过,但错误消息仍然与我看到的讲师构造函数相同?讲师::讲师(字符串名称,浮动工资):个人(名称){this->salary=salary;}但目前我们的教学大纲只在这里完成。在进入另一个阶段之前,我需要确保我理解这一点。您也在讲师面前添加了新的内容,如我的示例代码所示?我以前尝试过这一点,但错误消息仍然是samecan I see讲师构造函数?讲师::讲师(字符串名称,浮动工资):Person(name){this->salary=salary;}但目前我们的教学大纲只在这里完成。我需要确保在进入另一个阶段之前理解这一点。您也在讲师面前添加了新的内容,如我的示例代码所示?@Gwen:“这不能解决问题”:你在那一行得到的错误消息是什么?@Gwen你确定你没有编译该文件的旧版本吗?它对我有效:你所说的不编译该文件的旧版本是什么意思?无意中编译了一个未修复的源代码版本。Bathsheba提出的更改与我的答案结合在一起确实有效。请参阅链接。别担心,我会再次尝试从头开始重新创建和重新编码。我稍后会给你回复on@Gwen:“这并不能解决问题”:你在那一行得到的错误消息是什么?@Gwen你确定你没有编译该文件的旧版本吗?它对我有效:你所说的不编译该文件的旧版本是什么意思?无意中编译了一个未修复的源代码版本。Bathsheba提出的更改与我的答案结合在一起确实有效。请参阅链接。别担心,我会再次尝试重新创建和重新编码。稍后我会给你回复
#include <memory>
std::vector <std::unique_ptr<Person>> person_list;
cout << person_list[count]->display() << endl;