0

オブジェクトへのポインタをループ内のベクトルに保存することは可能ですか?

例えば:

rpc::session* session=NULL;

//Find Sessions with same UserID, Remove if > 1
for(std::vector<rpc::session>::iterator it = session_manager::sessions.begin(); it != session_manager::sessions.end();) {
  if(it->userid == userid){
    if(session == NULL) {
      *session = *it;
      ++it;
    } else {
      it = session_manager::sessions.erase(it);
    }
  } else {
    ++it;
  }
}

コードはコンパイルされますが、*session = *it に達するとすぐに、アクセス違反でクラッシュします..

4

4 に答える 4

2

NULLこれは、ポインターを逆参照しようとしているためです。sessionそのオブジェクトへのポインターを保存する場合は、ポインター自体を割り当てる必要があります- session = &(*it).

于 2013-04-02T12:52:59.800 に答える