-1

このテーマに関するいくつかの投稿を読みましたが、オブジェクト ポインターの stl リストを使用して、イテレーターを介して要素関数にアクセスする必要がある場合、アプリで null ポインターの実行時にエラーが発生することはわかりません。誰かが私を助けてくれますか?? 助けていただければ幸いです。前もって感謝します。これはコードの一部です:

  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

投票しないでくださいこれは答えではありません。しかし、コメントセクションには長すぎます。
質問が適切に更新されたら削除します。

これ:

typedef std::list<Actor> listActors;

リストがアクターへのポインターではなく、アクターのオブジェクトでいっぱいであると言います。

したがって、これが:

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

コンパイルすると、(* iter)はActorオブジェクトであり、->を使用できる唯一の方法は、クラスがをオーバーロードし、operator->()NULLのポインターを返す場合です。

Actorのコードがないため、何が問題になっているのかを判断できません。または、質問の作成時にカットペーストエラーが発生した可能性があります。その場合、私たちも助けることはできません。

問題を再現するためにコンパイルして実行できるコードを作成する必要があります。正確なコードを質問に貼り付けます。

于 2012-07-02T02:05:10.313 に答える
0

(*iter)->getName();間違っている。iter->getName();またはのどちらかを書く必要があります(*iter).getName();

于 2012-07-02T16:18:51.803 に答える