[英]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.