Tu ne vois pas quoi faire parce que tu ne cherches pas à comprendre la cause profonde du problème
Comme je te l'ai dit, dans un std::vector les éléments sont copiés de temps en temps (une fois quand tu insères, et parfois quand le tableau doit se mettre ailleurs en mémoire pour avoir plus de place). Donc il faut de manière évidente que la copie des choses qui sont dedans se passe bien, donc qu'ils aient un constructeur de copie correct.
Or que fait le constructeur de copie de ta classe ? Comme tu n'en as pas défini, c'est le compilateur qui le génère, en faisant une bête copie de tous les membres de la classe. Ca peut marcher dans la plupart des cas, mais malheureusement pas celui-ci. Pourquoi ? Parce que lorsque le membre Spr_ship va être copié, la copie va être identique au sprite d'origine ; en l'occurence, il va utiliser la même texture. Or ce n'est pas ce que tu veux : tu voudrais plutôt qu'il utilise la copie de la texture, celle qui se trouve dans l'instance copiée de Ship dans laquelle le sprite se trouve aussi. Et pour faire ça, il faut le coder, ça n'est pas fait tout seul.
Ca c'est pour la version courte
Dans l'absolu, il faut toujours se demander quelle sémantique doit avoir une classe : de copie ou d'entité. En gros, est-ce que les instances de ma classe ont une existance propre, ou bien seul leur contenu compte ? Pour des classes d'entités comme ça, la réponse est évidente : c'est une sémantique d'entité. A savoir qu'un Ship avec telle texture et sprite, et un autre Ship avec la même texture et le même sprite, seront tout de même différents (ils représenteront toujours deux bateaux / vaisseaux distincts dans le jeu). Donc... ça n'a pas de sens de copier ces entités, donc on l'interdit (et on s'affranchit des problèmes liés, comme celui auquel tu es confronté en ce moment). Concrètement, cela signifie stocker des pointeurs dans ton tableau de sorte que les objets ne soient jamais copiés simplement parce qu'ils sont dans un tableau. C'est toi qui gère leur durée de vie, et pas le tableau.
Si tout ceci est clair pour toi alors tu as tout compris (bravo), sinon ne t'inquiète pas c'est normal, ça prend du temps et de la pratique pour assimiler ce genre de concept et les subtilités qui y sont associées.