C++ 如何获取列表的每个对象并调用getName方法来打印它';姓名

C++ 如何获取列表的每个对象并调用getName方法来打印它';姓名,c++,list,iterator,C++,List,Iterator,通过调用getter方法来打印列表中包含的每个对象的名称时,我遇到了一个问题。我有一个班的学生。该类包含一个课程类型对象列表和一个名为printData()的方法,该方法内部有一个迭代器循环遍历列表以获取每个课程类型对象,并为每个对象调用getCourseName()方法以打印其名称。当我构建我的程序时,我得到以下3个错误: 1) “operator=”不匹配(操作数类型为“const迭代器”{aka'const std::_List_iterator}和“std:uuu cx11::List:

通过调用getter方法来打印列表中包含的每个对象的名称时,我遇到了一个问题。我有一个班的学生。该类包含一个课程类型对象列表和一个名为printData()的方法,该方法内部有一个迭代器循环遍历列表以获取每个课程类型对象,并为每个对象调用getCourseName()方法以打印其名称。当我构建我的程序时,我得到以下3个错误:

1) “operator=”不匹配(操作数类型为“const迭代器”{aka'const std::_List_iterator}和“std:uuu cx11::List::const_iterator'{aka'std:_List_const_iterator'})

2) 将'const iterator'{aka'const std::_List_iterator'}作为'this'参数传递将丢弃限定符

3) 'const iterator'{aka'const struct std::_List_iterator'}没有名为'getCourseName'的成员

有人能解释一下为什么我会出现这些错误,为什么我不能打电话给getter打印名字?。多谢各位

学生班级:

class Sudent
{
    list<Course> courses;
public:
    Student(list<Course> &c);
}
课程类别建构师:

Student::Student(list<Course> &c):
{

    this->courses = c; 
}   
Course::Course(string n)
{
    nameOfCourse = n;
}
课程getCourseName方法:

string Course::getCourseName()
{
    return nameOfCourse;
}
主要内容:

intmain()
{
课程c1(“数学”);
课程c2(“代数”);
课程c3(“几何学”);
航向arr[3]={c1,c2,c3};
列出课程参数;
对于(int i=0;i<3;i++)
{
航向参数推回(arr[i]);
}
学生研究1(课程参数);
stud1.printData();//我想打印学生的课程名称;
}
1)Student::printData()是常量,因此courses.begin()是列表::常量迭代器,不能分配给非常量迭代器

2) Course::getCourseName()不是常量,因此不能从常量上下文调用它

请查看此代码:

class Course {
 public:
  Course(const string& n) : nameOfCourse(n) {}
  const string& getCourseName() const noexcept { return nameOfCourse; }

 private:
  string nameOfCourse;
};

class Student {
 public:
  Student(list<Course> c) : courses(std::move(c)) {}
  void printData() const noexcept {
    for (const auto& course : courses) {
      cout << course.getCourseName() << "\n";
    }
  }

 private:
  list<Course> courses;
};

int main() {
  Student stud1({ Course("Math"), Course("Algebra"), Course("Geometry") });
  stud1.printData(); //I want to print the names of student's courses;
}
课程{
公众:
课程(常量字符串&n):课程名称(n){}
常量字符串&getCourseName()常量noexcept{return nameOfCourse;}
私人:
当然是字符串名;
};
班级学生{
公众:
学生(名单c):课程(标准::移动(c)){}
void printData()常量noexcept{
用于(常数自动和课程:课程){
库特
string Course::getCourseName()
{
    return nameOfCourse;
}
int main()
{
    Course c1("Math");
    Course c2("Algebra");
    Course c3("Geometry");
    Course arr[3] = {c1, c2, c3};

    list<Course> course_param;


    for(int i = 0; i < 3; i++)
    {
        course_param.push_back(arr[i]);
    }

    Student stud1(course_param);
    stud1.printData(); //I want to print the names of student's courses;

}
class Course {
 public:
  Course(const string& n) : nameOfCourse(n) {}
  const string& getCourseName() const noexcept { return nameOfCourse; }

 private:
  string nameOfCourse;
};

class Student {
 public:
  Student(list<Course> c) : courses(std::move(c)) {}
  void printData() const noexcept {
    for (const auto& course : courses) {
      cout << course.getCourseName() << "\n";
    }
  }

 private:
  list<Course> courses;
};

int main() {
  Student stud1({ Course("Math"), Course("Algebra"), Course("Geometry") });
  stud1.printData(); //I want to print the names of student's courses;
}