我在两个类中有以下功能:
Student::Student(const string & FName, const string & LName, const int ID){
first = FName;
last = LName;
id = ID;
student
类中的上述函数,以及students
类中的以下代码
Students::Students(){
}
void Students::add(Student & aStudent){
collection.push_back(&aStudent);
}
其中collection
是一个向量,它是Students
类的私有成员。在我的主要功能中,我创建了一个具有以下内容的学生:
student* bob = new student ("Bob" "Jones" 10000909);
我想现在将这名学生添加到学生的矢量中。我尝试了各种代码,如下所示:
students::add(bob)
students::add(*bob)
然而,这些都会导致错误,例如:
no known conversion for argument 1 from ‘Student*’ to ‘Student&’
我想知道在尝试添加学生时我做错了什么。
主:
#include <iostream>
#include <string>
#include "student.h"
#include "students.h"
using namespace std;
int main(){
Student* bob = new Student ("Bob" "Jones" 10000909);
Students::add(bob); //error occurs
return 0;
}
学生h:
#include <ostream>
#include <string>
class Student {
public:
StudentStudent(const string & FName, const string & LName, const int ID);
private:
string first;
string last;
int id;
};
学生h:
#include <ostream>
#include <vector>
#include "student.h"
#include <string>
using namespace std;
class Students {
public:
Students();
void add(Student & aStudent);
private:
vector<Student*> collection;
};
答案 0 :(得分:0)
我会重写你的主要内容:
int main(void)
{
Student bob("Bob", "Jones", 10000909);
Students aStudents;
aStudents.add(bob);
}
但我也会在向量中存储引用而不是指针。