Problème utilisation méthode classe simple C++

Fermé
Mazered21 - 17 juil. 2015 à 21:16
 Mazered21 - 18 juil. 2015 à 12:57
Salut!
Je débute en programmation C++, et j'expérimente les classes. J'ai créé un type d'objets duree, contenant de heures, de minutes et des sec, et des méthodes qui vont avec. Je créé ma "duree" nommée "duree1", et j'utilise la méthode que j'ai créé qui me permet de retourner le nombre d'heures de cette duree, appelée "direHeures".
Seulement, quand je fais duree1.direHeures, il me souligne le "." pour me dire qu'il ya a une erreur : "Error : un pointeur vers une fonction liée peut uniquement être utilisé pour appeler la fonction."
Voici le code du main.cpp avec l'erreur en ligne soulignée :

#include <iostream> //Déclaration des fichiers
#include "duree.h"
using namespace std;


int main() //Main
{
Duree duree1(10,3,12);
int a(duree1.direHeures);



return 0;
}

Les autres codes sont duree.h

#ifndef DEF_DUREE
#define DEF_DUREE

#include <iostream>
#include <string>


class Duree
{
public:

Duree(int heures = 0, int minutes = 0, int secondes = 0);
int direHeures();
int direMinutes();
int direSecondes();
int direTotalM();
int direTotalS();




protected:
int m_secondes;
int m_minutes;
int m_heures;

};

#endif


et duree.cpp :

#include "duree.h"
#include <iostream>
#include <string>
using namespace std;
int Duree::direHeures()
{
return m_heures;
}
int Duree::direMinutes()
{
return m_minutes;
}
int Duree::direSecondes()
{
return m_secondes;
}
int Duree::direTotalM()
{
return m_minutes + (m_heures * 60);
}
int Duree::direTotalS()
{
return m_secondes +(m_minutes * 60) + (m_heures * 60 * 60);
}
Duree::Duree(int heures, int minutes, int secondes) : m_heures(heures), m_minutes(minutes), m_secondes(secondes)
{
}


J,espère que vous pouvez m'aider, est-ce une erreur de syntaxe, de fichier?
Merci d'avance!
A voir également:

1 réponse

Utilisateur anonyme
17 juil. 2015 à 21:27
Bonjour

Je ne connais pas grand chose en C++, mais il me semble que dans duree1.direHeures, tu as oublié des parenthèses pour appeler la méthode direHeures : duree1.direHeures()
Et il me semble qu'il vaut mieux initialiser un int avec un = que comme s'il s'agissait d'un constructeur :

int a = duree1.direHeures(); 
0
ElementW Messages postés 4814 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
17 juil. 2015 à 22:21
qu'il vaut mieux initialiser un int avec un =
Pour la clarté du code, surtout quand on débute, oui il vaut mieux. Mais la syntaxe qu'il utilise, outre son erreur de parenthèses, est parfaitement valide, et il me semble même que (selon le compilateur et les optimisations), ça n'appelle pas les mêmes méthodes d'objet, là ou le
var = obj
appelle
Objet& operator=(Objet&);
(opérateur de copie) et où
var(obj)
appelle
Objet(Objet&)
(constructeur de copie). Bien sûr, ça ne s'applique pas dans le cas présent vu qu'on a pas a faire à une classe, et encore moins à une où ces méthodes sont définies (autrement elles sont implicitement définies).
0
Utilisateur anonyme
17 juil. 2015 à 22:57
Merci pour ces précisions. Comme je l'ai dit, je ne connais presque rien en C++, c'est pourquoi je me suis contenté d'un vague "il vaut mieux".
0
Oui, ça doit être ça, je vous dirai!
Merci
0