Menu

Problème de classe [Résolu]

Messages postés
6
Date d'inscription
mardi 16 janvier 2018
Dernière intervention
14 janvier 2019
-
Bonjour,

j'ai le message suivant lorsque je débugue :

error: request for member 'ChargerFic' in 'calendrier', which is of non-class type 'CCalendrier(std::vector<std::__cxx11::basic_string<char> >,
std::vector<std::__cxx11::basic_string<char> >, std::vector<std::__cxx11::basic_string<char> >,
std::vector<std::__cxx11::basic_string<char> >, std::vector<std::__cxx11::basic_string<char> >,
std::vector<std::__cxx11::basic_string<char> >)'|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

à la ligne 17 du fichier main.cpp, je ne comprends absolument pas pourquoi...

OBJECTIF:
ouvrir un fichier texte d'un nombre de lignes inconnu, de 6 champs séparés par un délimiteur (;) et terminé par ce même délimiteur
stocker chaque champs dans un tableau différent: tous les premiers champs de chaque ligne dans le tableau0, ... jusqu'à tableau5

voici les codes:

//CCalendrier.hpp

#ifndef CCALENDRIER_H_INCLUDED
#define CCALENDRIER_H_INCLUDED

#include <vector>
#include <string>

//=========================
class  CCalendrier
{
 private :
    std::vector<std::string> calendDate;
    std::vector<std::string> calendHeure;
    std::vector<std::string> calendEquipDom;
    std::vector<std::string> calendScorDom;
    std::vector<std::string> calendScorExt;
    std::vector<std::string> calendEquipExt;

 public :
    CCalendrier();
    CCalendrier (std::vector<std::string> c_Date,std::vector<std::string> c_Heure,std::vector<std::string> c_EquipDom,std::vector<std::string> c_ScorDom,std::vector<std::string> c_ScorExt,std::vector<std::string> c_EquipExt);
    ~CCalendrier();

 void ChargerFic();
 void  Afficher();

};
//=========================


#endif  //CCALENDRIER_H_INCLUDED


-------------------------------------------------------------------------
/
/CCalendrier.cpp

#include <sstream>
#include <iostream>
#include <fstream>

#include "CCalendrier.hpp"
//=========================
CCalendrier::CCalendrier(std::vector<std::string> c_Date,std::vector<std::string> c_Heure,std::vector<std::string> c_EquipDom,std::vector<std::string> c_ScorDom,std::vector<std::string> c_ScorExt,std::vector<std::string> c_EquipExt)
    {
    std::vector<std::string> calendDate=c_Date;
    std::vector<std::string> calendHeure=c_Heure;
    std::vector<std::string> calendEquipDom=c_EquipDom;
    std::vector<std::string> calendScorDom=c_ScorDom;
    std::vector<std::string> calendScorExt=c_ScorExt;
    std::vector<std::string> calendEquipExt=c_EquipExt;
    }
//=========================
void CCalendrier::ChargerFic()

{
    char nomfichier[20];
    std::string ligne;
    const std::string lim = ";";
    std::string enreg;

    std::cout << "Entrer le nom du fichier: ";
    std::cin.get (nomfichier,20);    // get c-string
    std::ifstream fichier(nomfichier, std::ios::in);

if(fichier)  // si l'ouverture a réussi
{
    while ( std::getline( fichier, ligne ) )
    {
  for (int j=0; j<=5; j++)
  {
   int deb=0;
   std::size_t postn = ligne.find(lim);
   std::string newligne = ligne.substr(postn);
   enreg = ligne.substr(deb,postn);

std::cout << "CAPACITE"<< j<< "NOMBRE ELEMENTS"<< j<< '\n';
   switch(j)
   {
    case 0:calendDate.push_back(enreg);
    case 1:calendHeure.push_back(enreg);
    case 2:calendEquipDom.push_back(enreg);
    case 3:calendScorDom.push_back(enreg);
    case 4:calendScorExt.push_back(enreg);
    case 5:calendEquipExt.push_back(enreg);
   }

  newligne = ligne.substr(postn + 1);
  deb = postn + 1;
  ligne = newligne;
        }

    }



}
else
    std::cerr << "Impossible d'ouvrir le fichier !" << std::endl;
}
//=========================
void CCalendrier::Afficher()
{

}

----------------------------------------------------------------------
//main.cpp

#include "CCalendrier.hpp"
//#include "CCategories.hpp"
//=========================

int main()
{
    std::vector<std::string> c_Date;
    std::vector<std::string> c_Heure;
    std::vector<std::string> c_EquipDom;
    std::vector<std::string> c_ScorDom;
    std::vector<std::string> c_ScorExt;
    std::vector<std::string> c_EquipExt;
//=========================
 CCalendrier calendrier(std::vector<std::string> c_Date,std::vector<std::string> c_Heure,std::vector<std::string> c_EquipDom,std::vector<std::string> c_ScorDom,std::vector<std::string> c_ScorExt,std::vector<std::string> c_EquipExt);  // appel du constructeur avec 100 comme argument
 calendrier.ChargerFic(); ERREUR

 //calendrier.Afficher();
//std::cout << "TAILLE : "<< c_TC.capacity() << "     "  << c_TC[0] << "     "  << "NBR ELEMS : " << c_NE<< "     "  << c_TC[53] << '\n';
}


Merci par avance pour votre aide
Cordialement, khornaeg
Afficher la suite 

Votre réponse

3 réponses

Messages postés
382
Date d'inscription
dimanche 7 février 2016
Dernière intervention
16 janvier 2019
62
0
Merci
Bonjour,

Pour appeler une fonction ou un constructeur, il faut fournir les paramètres nécessaires, mais en aucun cas il ne faut indiquer leur type avant (c'est la déclaration qui a besoin du type.)
CCalendrier calendrier(c_Date, c_Heure, c_EquipDom, c_ScorDom, c_ScorExt, c_EquipExt); // appel du constructeur avec 100 comme argument
Commenter la réponse de Dalfab
Messages postés
6
Date d'inscription
mardi 16 janvier 2018
Dernière intervention
14 janvier 2019
1
0
Merci
Bonjour Dalfab,

Effectivement, je n'ai plus l'erreur, par contre le débogueur signale 3 erreurs liés au destructeur par défaut "~CCalendrier()", d'où une nouvelle question, pourquoi la déclaration du destructeur par défaut ne fonctionne pas?
Peux-tu m'éclairer?

Cordialement, Khornaej
Commenter la réponse de Khornaej
Messages postés
382
Date d'inscription
dimanche 7 février 2016
Dernière intervention
16 janvier 2019
62
0
Merci
Il est où le destructeur?
Il est déclaré mais n'est jamais défini. Pour avoir un destructeur par défaut, un moyen simple c'est de ne pas le déclarer ou de la définir dans la classe par
~CCalendrier() = default;
Commenter la réponse de Dalfab