按类使对象的向量

Making vector of objects by class

本文关键字:向量 对象      更新时间:2023-10-16

我最近试图学习如何创建向量的对象,以表示学生的对象,包括他们的名字和成绩。但是当我编写程序时,我会遇到一些有关使用&的错误。我不知道我的错误有什么问题。您能帮我解决吗?

#include <iostream>
#include <vector>
#include <string>
using namespace std;
void printvector(const vector< student>&); // fill vector.fill in student information
void fillvector(vector< student>&); // print the information of all students
class student {
    public:
        student();
        student(string, char);
        ~student();
        string getName() ;
        char getGrade() ;
        void setName(string);
        void setGrade(char);
    private:
        string newName;
        char newGrade;
};
student::student() { newGrade = ' '; }
student::student(string name, char grade) {
        newName = name;
        newGrade = grade;
}
student::~student(){ }
string student::getName() { return newName; }
char student::getGrade() { return newGrade; }
void student::setName(string name) { newName = name; }
void student::setGrade(char grade) { newGrade = grade; }

int main() {
        vector<student> myclass;
        printvector(myclass);
        fillvector(myclass);
        return 0;
}
void fillvector(vector< student>& newmyclass) {
    string name;
    char grade;
    int classsize;
    cout << "how many students are in your class?";
    cin >> classsize;
    for (int i = 0; i < classsize; i++) {
        cout << "enter student name";
        cin >> name;
        cout << "enter student grade";
        cin >> grade;
        student newstudent(name, grade);
        newmyclass.push_back(newstudent);
        cout << endl;
    }
}
void printvector( vector< student>& newmyclass) {
    unsigned int size = newmyclass.size();
    for (unsigned int i = 0; i < size; i++) {
        cout << "student name:" << newmyclass[i].getName() << endl;
        cout << endl;
        cout << "student grade" << newmyclass[i].getGrade() << endl;
        cout << endl;
    }
}

看来您在填充矢量之前打印了矢量。.交换它们时的问题是否解决?

int main() {
        vector<student> myclass;
        printvector(myclass); // <--- These two lines should probably be swapped
        fillvector(myclass);  // <---
        return 0;
}