gpt4 book ai didi

c++ - 将对象添加到指针数组的函数

转载 作者:行者123 更新时间:2023-11-28 04:18:49 25 4
gpt4 key购买 nike

我需要向类(class)类(class)添加多名学生,但它总是覆盖最后一个条目。

我尝试将地址设置为对象并使用括号运算符,但这会导致内存泄漏。问题出在 AddStudent 函数

class Student {
public:
Student() { name = "unknown"; };
Student(string n) { name = n; };
void Print() { cout << name << endl; };
string GetName() { return name; };
private:
string name;
};

class Course {

public:
Course(int i) {
id=i;
nstudents=0;
capacity=0;
};

void AddStudent(Student s) {
students=&s;
nstudents++;
};

private:
int capacity;
int nstudents;
Student* students;
int id;
};

它只允许我添加一名学生。

最佳答案

"学生=&s;"您正在获取一个按值复制变量的地址,该变量在您离开该函数后变得悬空。你不存储学生。您必须在其中放入一个容器,例如 std::vector 并在其中复制/移动您的学生。

所以这里有一个带有复制和移动的 std::vector。

class Course {

public:
Course(int i) {
id=i;
};

void AddStudent(const Student& s) {
students.push_back(s);
};

void AddStudent(Student&& s) {
students.push_back(std::move(s));
};

private:
std::vector<Student> students;
int id;
};

关于c++ - 将对象添加到指针数组的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55931545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com