我有这样的事情:
void foo(){
Student *a0 = new Student();
Student *a1 = new Student();
Student *a2 = new Student();
Student *a3 = new Student();
}
我有另一个功能
void foo2(){
Student* delStudent;
delStudent = ll.ReturnStudentToDelete(); //this function returns a pointer to delete student
delete delStudent ;
delStudent = NULL;
}
假设,ll.ReturnStudentToDelete()
返回a2
的地址,上面的代码会删除此对象。我也想设置指针' a2'为NULL。但我不知道如何检索a2指针以便将其设置为NULL。
目前我有2个指针(a2和selStudent)指向同一个对象
另外,我被要求使用operator*() and operator->()
。但我根本没有这样做,所以我尽力做到最好。您能否发布一个简单的模板示例,说明如何实施。我知道上面的原始指针不好用
答案 0 :(得分:3)
根据您的代码,您执行此操作:
void foo(){
Student *a0 = new Student();
...
}
实际上,你从不存储指针。实际上这意味着当你调用foo
时,你会立即泄漏你创建的所有内存,因为你没有存储这些指针。 ll.ReturnStudentToDelete()
函数不仅不能获得a2
指针,它将无法获得任何相关指针。
您应该首先看看是否可以避免使用指针。例如,也许你的代码可以这样工作:
Student someStudent;
...
someStudent.doSomething();
或者如果你真的需要一群学生:
std::vector<Student> groupOfStudents;