Codice: Seleziona tutto
class campo{
private:
short val; //valore della matrice;
char** matr;
public:
campo(){val=32;};
void crea_mat();
void stampa_mat();
void ins_nave(short x,short y);
~campo(){};
};
Codice: Seleziona tutto
class player:private campo{
private:
short num_p;
vector<string> nome;
bool cont_ini;
public:
player(){num_p=0;};
void setta_num_p();
void stampa_nome();
void ins_cord();
~player(){};
};
Il mio problema come detto risiede nell'inserimento delle navi.Si può vedere chiaramente che nella classe player ho costruito un metodo ins_cord() che non fa altro che prendere delle cordinate in input dall'utente.Queste cordinate costituiscono la posizione della componente della nave.Il problema è che non riesco a inserire nessuna componente nelle posizioni specificate in input nella matrice di partenza.All'inizio pensavo che era un problema di eredetarietà.Cioè pensavo che giustamente non potevo modificare i valori della matrice se non l'ereditavo nella classe player.Per questo ho dichiarato la classe player come derivata della classe campo.Nonostante tutto però quando richiamo il metodo ins_nave() della classe campo non succede niente.Il compilatore non da errore,quindi il programma parte,solo che poi si arresta non costruendomi la nave.Mi sapete dire dove sbaglio?
Per maggiore chiarezza posto anche i codici del metodo ins_cord() e del metodo ins_nave():
Codice: Seleziona tutto
void player::ins_cord(){
short x=0,y=0;
cout<<"\n\nBisogna posizionare la nave di 2 componenti!";
for(short i=0;i<2;i++){
x=0,y=0;
cout<<"\n\nScegli la x della "<<i+1<<" componente della nave: ";
fflush(stdin);
cin>>x;
cout<<"\n\nScegli la y della "<<i+1<<" componente della nave: ";
fflush(stdin);
cin>>y;
ins_nave(x,y);
}
}
Codice: Seleziona tutto
void campo::ins_nave(short x,short y){
*(&matr[0][0]+(val-1)*x+y)='4';
stampa_mat();
}



