我必须创建一个对象列表,所以为了保持它尽可能平滑,我想使用std :: vector而不是常规的对象数组。但是,我并不完全知道如何正确使用它们。以下是我班级的示例代码,我尝试将对象添加到vecor,然后使用第二种方法显示它们。
private:
vector <Student> stud;
public:
void Student::dodaj(){
stud.push_back(Student(getNaz(), getImie(), getLeg(), getRok()));
}
void Student::wypisz(){
cout << "Lista osob:\n";
for (int i = 0; i < 1; i++)
{
cout << endl;
cout << "Nazwisko: " << stud[i].nazwisko << endl;
cout << "Imie: " << stud[i].imie << endl;
cout << "Numer indeksu.: " << stud[i].legitymacja << endl;
cout << "Rok studiow: " << stud[i].rok << endl;
}
我的主要人物:
Student st("Kowalski", "Jan", 123455, 2);
Student test1("Nowak", "Jan", 123, 2);
st.dodaj();
test1.dodaj();
test1.wypisz();
然而输出结果只是一个对象,我使用wypisz(打印/显示)方法,在这种情况下test1,而不是其中两个显示 - st和test1。任何想法如何解决?
答案 0 :(得分:1)
stud
似乎是Student
的成员,这意味着每个Student
对象都包含自己的向量。当您针对特定学生致电dodaj
时,它会将自己的详细信息添加到其中包含的矢量中。
st.dodaj(); // Adds details of st to st's own vector
test1.dodaj(); // Adds details of test1 to test1's own vector
// Now we have one vector inside st containing a single element
// and one vector inside test1 containing a single element
test1.wypisz(); // Prints elements from test1's vector
相反,你的矢量应该在你的Student
类之外(或者至少是静态的)。一种选择是这样做:
Student st("Kowalski", "Jan", 123455, 2);
Student test1("Nowak", "Jan", 123, 2);
std::vector<Student> stud;
std.push_back(st);
std.push_back(test1);
您可能想要另一个包含此向量的类(可能是School
?)。