因此,我习惯于使用C#进行编码,并且经过相当长的休息后才再次开始使用C++。本质上,我想做的是创建一个包含类(class)中具有ID的学生列表的程序。

我有这段代码,基本上可以打印出类(class)中所有可用的学生。

auto allCourses = WSUCourse::getAllCourses();
   std::for_each(
       allCourses.begin(),
       allCourses.end(),
       GetCoursePrinter());

在构造函数中的此代码中调用GetCoursePrinter()
struct GetCoursePrinter
{
   void operator () (
      MyCourse *coursePtr
   )
   {
      std::cout << coursePtr->getIdentifier() <<
         ": " <<
         coursePtr->getTitle() <<
         std::endl;
   }
};

我的问题是我删除了这样的注册后
MyEnrollment *enrollmentPtr = MyEnrollment::findEnrollment(
   MyStudent::getStudentWithUniqueID(1000002),
   MyCourse::getCourseWithIdentifier("CS 2800")
);
delete enrollmentPtr;

然后尝试使用GetCoursePrinter打印它崩溃。我相信这是因为它正在尝试访问不存在的内容。我想知道的是,是否有一种方法可以这样称呼
if (allCourses.current() != null)
{
    GetCoursePrinter();
}
else
{
    //do nothing
}

最佳答案

您打电话的时候:

delete enrollmentPtr;

您需要在环境中删除该项目。

07-25 21:54