我正在尝试与学生代表一门课程。学生有关于他们的名字和姓氏,年龄的信息。课程有一个名字和3名学生组成的数组。
当我尝试为数组定义getter和setter时出现错误。
错误(活动)E0415不存在合适的构造函数,无法从“学生[3]”转换为“学生”
错误(有效)的E0137表达式必须是可修改的左值
Course.h
#pragma once
#include "Student.h"
#include "Teacher.h"
class Course
{
private:
string name;
Student students[3];
Teacher teacher;
public:
Course();
~Course();
void setName(string name);
string getName();
void setStudents(Student students[3]);
[3] Student getStudents();
};
Course.cpp
#include <iostream>
#include "Course.h"
#include "Student.h"
#include "Teacher.h"
using namespace std;
Course::Course() {}
Course::~Course()
{
}
void Course::setName(string name)
{
this->name = name;
}
string Course::getName()
{
return this->name;
}
void Course::setStudents(Student students[3])
{
/*for (int i = 0; i < 3; i++) {
this->students[i] = students[i];
}*/
//This way the set works
this->students = students;
}
[3]Student Course::getStudents()
{
return this->students;
}
我希望get的输出是学生数组。
答案 0 :(得分:2)
C样式数组无法复制,不能自动分配,也不能从函数返回。
值得庆幸的是,C ++标准库为实现所有这些操作的C样式数组提供了一个瘦包装器类。它称为std::array
,可以像您尝试使用C样式数组一样使用。
#pragma once
#include "Student.h"
#include "Teacher.h"
#include <array>
class Course
{
private:
string name;
std::array<Student, 3> students;
Teacher teacher;
public:
Course();
~Course();
void setName(string name);
string getName();
void setStudents(std::array<Student, 3> students);
std::array<Student, 3> getStudents();
};