我正在阅读一些关于这个主题的帖子,我不知道,使用stl列表中的对象指针,当我想通过迭代器访问元素函数时,应用程序让我得到空指针的错误运行时间。有人会帮我吗?我感谢任何帮助。提前致谢。 这是代码的一部分:
typedef std::list<Actor> listActors;
listActors listactors = pMain->Actors();
listActors::iterator iter = listactors.begin();
std::string nameactor;
nameactor = (*iter)->getName();//Here the app get a run time error of null pointer
答案 0 :(得分:0)
不要投票这不是一个答案。但评论部分的时间太长了。
当问题得到适当更新时,我会删除。
此:
typedef std::list<Actor> listActors;
表示你的列表中充满了Actor 不是指向Actors的指针。
因此如果:
nameactor = (*iter)->getName();
编译,然后(* iter)是一个Actor对象,也是唯一可以使用的方法 - &gt;如果该类重载operator->()
并返回一个NULL指针。
由于我们没有Actor的代码,我们无法告诉您出现了什么问题,或者更可能您在创建问题时出现了剪切粘贴错误。在这种情况下,我们也无能为力。
您需要编写我们可以编译并运行的代码来复制问题。他们将确切的代码粘贴到问题中。
答案 1 :(得分:0)
(*iter)->getName();
错了。
您应该写iter->getName();
或(*iter).getName();
。