繁体   English   中英

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

[英]c++ passing a pointer to a function that takes a reference

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

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;

};

我将重写您的主要内容:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM