Initialisation variable

fredrizk Messages postés 12 Date d'inscription mercredi 6 juillet 2011 Statut Membre Dernière intervention 1 août 2011 - 5 juil. 2011 à 09:46
fredrizk Messages postés 12 Date d'inscription mercredi 6 juillet 2011 Statut Membre Dernière intervention 1 août 2011 - 5 juil. 2011 à 11:09
Bonjour
Je suis débutant et j'essaye d'écrire un code en C++ mais j'ai un problème d'initialisation de mes variables dans ma class. J'initialise à 0, j'affecte une nouvelle valeur mais le logiciel me renvoi toujours 0.
Si quelqu'un pourrait juste me dire ou est mon erreur ça serait super.
Je met une partie du code si ça peut être utile
Merci d'avance

fichier.h

#ifndef CALDEBIT_H
#define CALDEBIT_H

#include <QWidget>

class QDoubleSpinBox;
class QGroupBox;
class QLabel;
class QPushButton;
class QAction;
class QMessageBox ;
class QString ;

class Window : public QWidget
{
Q_OBJECT

public:

void Init()
{
Ivalcote = 0;
}

Window();

public slots:

void Resultats();
double calculs();
void OnClick();

private:
double CoteDebit();
void Boutons();
void quit();
void setText();

QDoubleSpinBox *doubleSpinBox;
QGroupBox *spinBoxesGroup;
QGroupBox *editsGroup;
QGroupBox *doubleSpinBoxesGroup;
QLabel *label;
QPushButton *boutonok;
QPushButton *boutonQuitter;
QAction *exitAction;

double Ivalcote;
double Ivalcote1;
double Ivaldebit;
double valcote;
double valcote1;
double valdebit;
};

#endif // CALDEBIT_H

fichier.cpp

Window::Window()
{
CoteDebit();
Boutons();

QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(spinBoxesGroup);
layout->addWidget(editsGroup);
layout->addWidget(doubleSpinBoxesGroup);
setLayout(layout);



setWindowTitle(tr("Calculateur du Barrahe de Villerest"));
}

double Window::CoteDebit()
{
Init();

spinBoxesGroup = new QGroupBox(tr("Cotes et Débit : "));

QLabel *retenue = new QLabel(tr("Entrer la cote de la retenue précedente : "));

QDoubleSpinBox *SpinBox = new QDoubleSpinBox;
SpinBox->setRange(270, 325);
SpinBox->setSingleStep(0.01);
SpinBox->setValue(0);
valcote = SpinBox->value();

QLabel *retenueactuelle = new QLabel(tr("Entrer la cote de la retenue actuelle : "));

QDoubleSpinBox *retactu = new QDoubleSpinBox;
retactu->setRange(270, 325);
retactu->setSingleStep(0.01);
retactu->setValue(0);
valcote1 = retactu->value();

QLabel *debitsortant = new QLabel(tr("Entrer la valeur du débit sortant actuel : "));

QDoubleSpinBox *debsor = new QDoubleSpinBox;
debsor->setRange(0, 4000);
debsor->setSingleStep(0.01);
debsor->setValue(0);
valdebit = debsor->value();

QGridLayout *spinBoxLayout = new QGridLayout;
spinBoxLayout->addWidget(retenue,0,0);
spinBoxLayout->addWidget(SpinBox,1,0);
spinBoxLayout->addWidget(retenueactuelle,3,0);
spinBoxLayout->addWidget(retactu,4,0);
spinBoxLayout->addWidget(debitsortant,6,0);
spinBoxLayout->addWidget(debsor,7,0);

spinBoxesGroup->setLayout(spinBoxLayout);

Ivalcote=valcote;
Ivalcote1=valcote1;
Ivaldebit=valdebit;

return Ivalcote;
return Ivalcote1;
return Ivaldebit;
}
void Window::Resultats()
{

QString res ;
res.setNum (Ivalcote);
QString res1;
res1.setNum (valcote1);
QString Qs ;
Qs.setNum(valdebit);
QString Time;
Time.setNum(Dt);
QString Vol;
Vol.setNum(DV);
QString Qe;
Qe.setNum(debitentrant);

qDebug() << "la première cote de la retenue est au niveau"<<Ivalcote<<"NGF.";
qDebug() << "la deuxième cote de la retenue est au niveau"<<valcote1<<"NGF.";
qDebug() << "le débit sortant est de"<<valdebit<<"M3/s.";
}

6 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
5 juil. 2011 à 10:07
Hello,
D'une, c'est du Qt.
De deux, tu ne dis pas quelle variable te pose problème.
Un peu plus de précision, s'il te plaît?


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
fredrizk Messages postés 12 Date d'inscription mercredi 6 juillet 2011 Statut Membre Dernière intervention 1 août 2011
5 juil. 2011 à 10:16
Bonjour Buno,
Désolé j'ai poster le message dans la partie C++ parce que c’était un problème de class.
Toutes les variables me pose problèmes si je comprend comment en faire une je pourrai toutes les corriger.
Par exemple pour :

double Ivalcote;

en mettant une valeur j'obtient toujours la valeur de l'initialisation.

Merci de ton aide
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
5 juil. 2011 à 10:41
return Ivalcote; 
return Ivalcote1; 
return Ivaldebit; 
} 

Aïe, aïe, aïe,... pas bon ça..."return" indique à ton programme de quitter la fonction en cours. Donc, très logiquement, les 2 derniers returns ne seront jamais exécuté. Y'a un truc que t'as pas dû piger je pense.

Ensuite, en ce qui concerne l'affectation des variables, places des points d'arrêt et regarde si tu ne leur affectes pas 0, tout simplement.

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
fredrizk Messages postés 12 Date d'inscription mercredi 6 juillet 2011 Statut Membre Dernière intervention 1 août 2011
5 juil. 2011 à 10:54
Oups :s.
Donc c'est mieux que je passe la fonction en "void" que j’enlève mes "return" et que je récupére la fonction plus loin pour avoir mes résultats ?

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
5 juil. 2011 à 11:05
ça dépend de ce que tu veux faire.
Tu peux très bien déclarer ta méthode comme suit:
double Window::CoteDebit()

Mais il faut un seul return (ou plusieurs mais dans des "branches" différentes: switch, if,...).
A toi de voir quel est l'objectif de cette méthode: retourner un résultat ou non.


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
fredrizk Messages postés 12 Date d'inscription mercredi 6 juillet 2011 Statut Membre Dernière intervention 1 août 2011
5 juil. 2011 à 11:09
D'accord
Merci de te aide. Je vais essayer de corriger tout ça :).
0
Rejoignez-nous