c ++将指针传递给带引用的函数

时间:2017-10-23 22:26:44

标签: c++

我在两个类中有以下功能:

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;

};

1 个答案:

答案 0 :(得分:0)

我会重写你的主要内容:

int main(void)
{
      Student bob("Bob", "Jones",  10000909);
      Students aStudents;
      aStudents.add(bob);
}

但我也会在向量中存储引用而不是指针。