Ciao a tutti, sono nuovo sia del forum che della programmazione in C++ in generale. Sto cercando di avvicinarmi pian piano ma purtroppo ho riscontrato un problema di crash della workstation, non individuato dal DEV in fase di compilazione. Se foste in grado di darmi una mano ve ne sarei grato!
#include <iostream>
#include <cstdlib>
using namespace std;
struct punto3d{
char* nome;
float x,y,z;
};
void leggepunto3d(struct punto3d*&, int);
void leggevettorepunti3d(struct punto3d*, int);
int main(){
int n;
struct punto3d* p;
cout<<"Quanti punti si vogliono immettere? ";
cin>>n;
p=new struct punto3d[n];
if(p!=NULL){
cout<<"\nMemoria Heap assegnata \n\n";
};
leggepunto3d(p,n);
leggevettorepunti3d(p,n);
delete [] p;
system("PAUSE");
return 0;
}
void leggepunto3d(punto3d* &punto, int num){
punto->nome=new char[num];
for(int i=0; i<num; i++){
cout<<"Inserire il nome del punto "<<i<<": ";
cin>>punto[i].nome;
cout<<"Inserire il parametro x del punto "<<i<<": ";
cin>>punto[i].x;
cout<<"Inserire il parametro y del punto "<<i<<": ";
cin>>punto[i].y;
cout<<"Inserire il parametro z del punto "<<i<<": ";
cin>>punto[i].z;
};
}
void leggevettorepunti3d(punto3d* punto, int num){
for(int i=0; i<num; i++){
cout<<"Il nome del punto "<<i<<" e': "<<punto[i].nome<<endl;
cout<<"Il punto "<<i<<" ha coordinate ("<<punto[i].x<<","<<
punto[i].y<<","<<punto[i].z<<")"<<endl;
};
}
Il problema in questione avviene nel momento in cui vado ad immettere un secondo valore al campo punto
.nome. Tecnicamente non ho capito come allocare dinamicamente spazio per un campo di una struct che sia un char* o un qualsiasi altro tipo predefinito.