如何声明数组成员变量的获取器/设置器

时间:2019-04-13 09:59:21

标签: c++ visual-studio compiler-errors

我正在尝试与学生代表一门课程。学生有关于他们的名字和姓氏,年龄的信息。课程有一个名字和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的输出是学生数组。

1 个答案:

答案 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();
};