-1

我读过一些关于这个主题的帖子,但我不知道,使用对象指针的 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
4

2 回答 2

0

(*iter)->getName();是错的。你应该写要么iter->getName();要么(*iter).getName();

于 2012-07-02T16:18:51.803 回答
0

不要投票这不是答案。但是评论区太长了。
当问题得到适当更新时,我将删除。

这个:

typedef std::list<Actor> listActors;

说您的列表中充满了 Actor 的对象,而不是指向 Actor 的指针。

因此,如果这样:

nameactor = (*iter)->getName();

编译,则 (*iter) 是一个 Actor 对象,您可以在其上使用 -> 的唯一方法是该类重载operator->()并返回一个为 NULL 的指针。

由于我们没有 Actor 的代码,我们无法告诉您出了什么问题,或者您更有可能在创建问题时犯了剪切粘贴错误。在这种情况下,我们也无能为力。

您需要编写我们可以编译和运行的代码来复制问题。他们将确切的代码粘贴到问题中。

于 2012-07-02T02:05:10.313 回答