Problema c++

Iniciado por grandanh, 11 Febrero 2014, 18:05 PM

0 Miembros y 1 Visitante están viendo este tema.

grandanh

a

amchacon

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.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar