Problème implémentation fonction amie
Khornaej
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Khornaej Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Khornaej Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour le forum,
j'ai un petit problème avec une fonction amie:
aucune erreur n'est signalée (mais la syntaxe ne me semble pas repectée,"friend void AfficherEquipes(std::vector<std::string> CalendEquipDom);"
sans la résolutin de portée (CEquipes:: devant AfficherEquipes), de plus le vector final n'est pas rempli
Si la syntaxe est respectée :|error: invalid use of incomplete type 'class CEquipes'|
Objectif:
accéder à un attibut de la classe CCalendrier(le vector "c_EquipDom") à travers la procédure d'une autre classe
J'ai lu et relu plusieurs cours sur les fonctions amies, j'avoue avoir du mal à comprendre leur mise en oeuvre
merci pour votre aide et vos éclaircissements
Cordialement, Khornaej
Ci-dessous les différents fichiers:a
j'ai un petit problème avec une fonction amie:
aucune erreur n'est signalée (mais la syntaxe ne me semble pas repectée,"friend void AfficherEquipes(std::vector<std::string> CalendEquipDom);"
sans la résolutin de portée (CEquipes:: devant AfficherEquipes), de plus le vector final n'est pas rempli
Si la syntaxe est respectée :|error: invalid use of incomplete type 'class CEquipes'|
Objectif:
accéder à un attibut de la classe CCalendrier(le vector "c_EquipDom") à travers la procédure d'une autre classe
J'ai lu et relu plusieurs cours sur les fonctions amies, j'avoue avoir du mal à comprendre leur mise en oeuvre
merci pour votre aide et vos éclaircissements
Cordialement, Khornaej
Ci-dessous les différents fichiers:a
//main.cpp
#include "CCalendrier.hpp"
#include "CEquipes.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(c_Date,c_Heure,c_EquipDom,c_ScorDom,c_ScorExt,c_EquipExt);
Calendrier.ChargerFic();
std::vector<std::string> c_ListEquipes;
int c_NbreEquipes;
CEquipes Equipes(c_ListEquipes,c_NbreEquipes);
Equipes.TrierEquipes(c_EquipDom);
}
//CCalendrier.hpp
#ifndef CCALENDRIER_H_INCLUDED
#define CCALENDRIER_H_INCLUDED
#include <vector>
#include <string>
class CEquipes;
class CCalendrier
{
friend void AfficherEquipes(std::vector<std::string> CalendEquipDom);//si "AfficherEquipes" seul pas d'erreur mais "TrierEquipes" ne donne rien
//sinon:|error: invalid use of incomplete type 'class CEquipes'|
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() = default;
void ChargerFic();
};
#endif //CCALENDRIER_H_INCLUDED
//CCalendrier.cpp
#include <sstream>
#include <iostream>
#include <fstream>
#include "CCalendrier.hpp"
#include "CEquipes.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 d'un fichier existant: "; Le nom sera selectionné à partir d'une boite de dialogue
//std::cin.get (nomfichier,20); // get c-string
std::ifstream fichier("ANG.txt", 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);
switch(j)
{
case 0:
CalendDate.push_back(enreg);
break;
case 1:
CalendHeure.push_back(enreg);
break;
case 2:
CalendEquipDom.push_back(enreg);
break;
case 3:
CalendScorDom.push_back(enreg);
break;
case 4:
CalendScorExt.push_back(enreg);
break;
case 5:
CalendEquipExt.push_back(enreg);
break;
}
newligne = ligne.substr(postn + 1);
deb = postn + 1;
ligne = newligne;
}
}
}
else
std::cerr << "Impossible d'ouvrir le fichier !" << std::endl;
}
//CEquipes.hpp
#ifndef CEQUIPES_H_INCLUDED
#define CEQUIPES_H_INCLUDED
#include <vector>
#include <string>
//class CCalendrier;
class CEquipes
{
private:
std::vector<std::string> ListEquipes;
int NbreEquipes;
public:
CEquipes();
CEquipes(std::vector<std::string> c_ListEquipes,int c_NbreEquipes);
void TrierEquipes(std::vector<std::string> CalendEquipDom);
~CEquipes() = default;
};
#endif // CEQUIPES_H_INCLUDED
//CEquipes.cpp
#include <algorithm>
#include <iostream>
#include "CEquipes.hpp"
#include "CCalendrier.hpp"
CEquipes::CEquipes(std::vector<std::string> c_ListEquipes,int c_NbreEquipes)
{
std::vector<std::string> ListEquipes=c_ListEquipes;
int NbreEquipes=c_NbreEquipes;
}
void CEquipes::TrierEquipes(std::vector<std::string> CalendEquipDom)
{
std::sort(CalendEquipDom.begin(), CalendEquipDom.end());
std::unique_copy(CalendEquipDom.begin(), CalendEquipDom.end(), std::back_inserter(ListEquipes));
int NbreEquipes=ListEquipes.size();
}
A voir également:
- Problème implémentation fonction amie
- Fonction si et - Guide
- Petite amie virtuelle en français gratuit - Accueil - Intelligence artificielle
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide