Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: grandanh en 11 Febrero 2014, 18:05 PM

Título: Problema c++
Publicado por: grandanh en 11 Febrero 2014, 18:05 PM
a
Título: Re: Problema c++
Publicado por: amchacon en 12 Febrero 2014, 02:32 AM
El problema esque el vector<song> tiene un tamaño inicial de cero. Como no redimensionas estas adcediendo a posiciones no reservadas, de modo que levanta una excepción.

Tienes que reservar memoria previamente, te dejo la documentación de la clase vector:
http://www.cplusplus.com/reference/vector/vector/

Por cierto en este for:
Código (cpp) [Seleccionar]
bool isSongInCollection(const Collection &collection, Song song){
 
  bool repetida=false;
  int i;
 
  for(i=0;i<collection.idNextSong;i++){
    if(song.title==collection.songs[i].title && collection.songs[i].artist==song.artist){
      repetida=true;
    }
  }
  return repetida;   
   
}


Si esta repetida no deberías terminar la función devolviendo true? No tiene sentido seguir buscando.

PD: Olvidate de los typedef, no son necesarios en C++:
Código (cpp) [Seleccionar]
struct Song
{
  int id; // El identificador de una nueva cancion debe ser igual a idNextSong
  string title;
  string artist;
  string album;
  string genre;
  string url;
};


Y C++ tiene mecanismos más efectivos para progamación orientada a objetos (las clases). Te recomiendo que te las mires, los mecanismos de encapsulamiento que usa te evitará muchos errores.

Saludos.