Ton "instruction" caseList; dans le constructeur ne sert à rien. Par défaut, ton vecteur est automatiquement instancié, avec le constructeur par défaut, tu n'a rien a faire.
C'est comme si tu écrivais:
Moteur::Moteur(): caseList(std::vector<Case>())
{
}
Le problème peut venir du constructeur de Case, ou bien du constructeur par copie
Comme tu n'a que des valeurs entières, je ne pense pas que tu ais besoin de ce constructeur par recopie.
Peux-tu connaitre exactement l'endroit qui fait planter ton programme?
std::vector<std::string> wFileList = file->getFileList();//renvoi un vecteur contenant le chemin de plusieurs fichiers
SDL_Rect r;
std::vector caseRemplie;
int caseIdx = 0;
int interCell = 10;
int x = interCell;
int y = interCell;
int cols = getMaxCols(wFileList.size()*2); // permet d'obtenir le nombre le colonne en fonction du nombre de fichier OK.
int lines = (wFileList.size()*2)/cols; //nombre de ligne
int width = (int)((WIDTH-(cols*interCell))/cols); //taille des cases
int height = (int)((HEIGHT-(lines*interCell))/lines); // taille des cases
caseRemplie = fillBoard(wFileList.size()*2); //rempli le vecteur avec des int aleatoires distincts
std::cout << caseList.capacity()<<"\n"; //affiche 0
caseList.reserve(wFileList.size()*2);
std::cout << caseList.capacity()<<"\n"; affiche 20 car 10 fichiers *2
caseList.at(0)->setID("1"); plante ici.
J'ai enlevé le try catch.
Je souhaiterais repartir aléatoirement les noms de fichiers dans les cases du vecteur,mais j'avoue avoir du mal.
Est ce qu'avec un std::fill cela passerais mieux, je vais essayé.