Problème de constructeurs

Fermé
Debutant en webmastering Messages postés 401 Date d'inscription lundi 6 juin 2011 Statut Membre Dernière intervention 27 janvier 2021 - Modifié le 16 mai 2017 à 08:50
Debutant en webmastering Messages postés 401 Date d'inscription lundi 6 juin 2011 Statut Membre Dernière intervention 27 janvier 2021 - 17 mai 2017 à 08:50
Bonjour, bonsoir,
je ne sais pas si la logique est bonne mais j'essaie, à partir d'un tableau de données (pour le moment simple mais après, à partir d'un .csv), de créer un nouvel objet ayant comme variables différentes données utiles pour des calculs mathématiques à venir.
Pour cela, je passe par un constructeur qui initialise mes variables (et effectue les calculs de base comme somme, moyenne etc) puis par un second constructeur qui est censé enregistrer ces variables ; mais quand j'essaie de les récupérer à l'aide d'un get, j'obtiens un simple 0 ce qui ne correspond en rien au résultat attendu.

Voici les différentes parties de code concernées (avec pour contrainte de travailler à partir d'une librairie statique "kNNclus")

//Main
//Test Data
unsigned int *noise = new unsigned int[N];
noise[0] = 36;
noise[1] = 40;
noise[2] = 36;
//End Test Data

kNNclus::CategoryData *processedNoise = new kNNclus::CategoryData(noise, N);
std::cout << "Sum of processedNoise = " << processedNoise->getSum() << std::endl;


class CategoryData
{
protected:
std::string label;
float sum, mean, min, max, variance, standardDeviation, expectation;
CategoryData(std::string la, float su, float me, float mi, float ma, float va, float sd, float ex);
CategoryData(float *columnData, unsigned int columnDataSize);
CategoryData(unsigned int *columnData, unsigned int columnDataSize);
float getSum();


//Constructors Used
CategoryData::CategoryData(unsigned int *columnData, unsigned int columnDataSize)
{
float sum = kNNclus::Utils::sumUnsignedInt(columnData, columnDataSize);
float mean = kNNclus::Utils::meanUnsignedInt(sum, columnDataSize);
float min = *std::min_element(columnData, columnData + columnDataSize);
float max = *std::max_element(columnData, columnData + columnDataSize);
float variance = kNNclus::Utils::varianceUnsignedInt(columnData, mean, columnDataSize);
float standardDeviation = kNNclus::Utils::standardDeviation(variance);
float expectation = kNNclus::Utils::expectationUnsignedInt(columnData, columnDataSize);
std::string label = "testUnsignedInt";
CategoryData(label, sum, mean, min, max, variance, standardDeviation, expectation);
}

CategoryData::CategoryData(std::string la, float su, float me, float mi, float ma, float va, float sd, float ex)
{
setLabel(la);
setSum(su);
setMean(me);
setMin(mi);
setMax(ma);
setVariance(va);
setStandardDeviation(sd);
setExpectation(ex);
}

J'ai fait différents "affichages" de variables à différents moments

noise[0]= 36
noise[1]= 40
noise[2]= 36
somme dans constructeur CategoryData::CategoryData(unsigned int *columnData, unsigned int columnDataSize) = 112
valeur avant set : 112
valeur après set : 112
somme dans constructeur CategoryData::CategoryData(std::string la, float su, float me, float mi, float ma, float va, float sd, float ex) = 112

mais processedNoise->getSum() donne toujours 0 comme résultat



Cordialement,  Debutant en webmastering

1 réponse

Debutant en webmastering Messages postés 401 Date d'inscription lundi 6 juin 2011 Statut Membre Dernière intervention 27 janvier 2021
17 mai 2017 à 08:50
up
0