lycenhol
31-03-2009, 15:29
Ho un problema in C++ con il seguente codice:
#include <iostream>
using namespace std;
const unsigned int num_int = 30;
class Calcolus {
float* int_tab;
public:
Calcolus();
~Calcolus();
void set_int(unsigned int,float);
float get_int (unsigned int);
};
Calcolus::Calcolus(){
if(int_tab==NULL){
int_tab=(float*)malloc(sizeof(float)*num_int);
}
}
Calcolus::~Calcolus(){
}
void Calcolus::set_int (unsigned int ind, float val){
if (ind<num_int){
if (int_tab==NULL)
int_tab=(float*)malloc(sizeof(float)*num_int);
int_tab[ind]=val;
}
}
float Calcolus::get_int (unsigned int ind){
float result;
if (ind>=num_int)
return 0;
if (int_tab==NULL)
return 0;
result=int_tab[ind];
return result;
}
int main()
{
Calcolus Prova;
Prova.set_int(1, 0.05);
Prova.set_int(2, 0.07);
cout << Prova.get_int(0) <<endl;
cout << Prova.get_int(1) <<endl;
cout << Prova.get_int(2) <<endl;
return 0;
}
Nell'esempio il compilatore MinGW mi da errore, per la presenza del distruttore, anche se non fa nulla. Se tolgo il distruttore il tutto funziona.
Nella versione finale il distruttore dovrà eliminare int_tab con free, e in aggiunta tutti gli altri pointer che devo andare ad aggiungere.
Altri esempi presi da Internet, ma analoghi funzionano.
#include <iostream>
using namespace std;
const unsigned int num_int = 30;
class Calcolus {
float* int_tab;
public:
Calcolus();
~Calcolus();
void set_int(unsigned int,float);
float get_int (unsigned int);
};
Calcolus::Calcolus(){
if(int_tab==NULL){
int_tab=(float*)malloc(sizeof(float)*num_int);
}
}
Calcolus::~Calcolus(){
}
void Calcolus::set_int (unsigned int ind, float val){
if (ind<num_int){
if (int_tab==NULL)
int_tab=(float*)malloc(sizeof(float)*num_int);
int_tab[ind]=val;
}
}
float Calcolus::get_int (unsigned int ind){
float result;
if (ind>=num_int)
return 0;
if (int_tab==NULL)
return 0;
result=int_tab[ind];
return result;
}
int main()
{
Calcolus Prova;
Prova.set_int(1, 0.05);
Prova.set_int(2, 0.07);
cout << Prova.get_int(0) <<endl;
cout << Prova.get_int(1) <<endl;
cout << Prova.get_int(2) <<endl;
return 0;
}
Nell'esempio il compilatore MinGW mi da errore, per la presenza del distruttore, anche se non fa nulla. Se tolgo il distruttore il tutto funziona.
Nella versione finale il distruttore dovrà eliminare int_tab con free, e in aggiunta tutti gli altri pointer che devo andare ad aggiungere.
Altri esempi presi da Internet, ma analoghi funzionano.