jimdano
Messages postés16Date d'inscriptionmercredi 7 avril 2010StatutMembreDernière intervention20 mars 2013
-
14 févr. 2011 à 22:06
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024
-
15 févr. 2011 à 21:04
Bonjour, je viens de commencer le c++ il y a 4 semaines, en IUT.
Je suis confronté à un problème, pour un projet, j'ai un problème d'accès, l'éxécuteur me met cette erreur :
./src/CProduitBase.h:19: error: ‘void CProduitBase::setCateg(short int)’ is inaccessible
./src/testCProduit.cpp:16: error: within this context
./src/testCProduit.cpp:16: error: ‘CProduitBase’ is not an accessible base of ‘CProduit’
./src/CProduitBase.h:15: error: ‘short int CProduitBase::getCateg()’ is inaccessible
./src/testCProduit.cpp:17: error: within this context
./src/testCProduit.cpp:17: error: ‘CProduitBase’ is not an accessible base of ‘CProduit’
voici le code de la partie fausse : CProduitBase.h
#ifndef CPRODUITBASE_H
#define CPRODUITBASE_H
#include "BiblioStd.h"
// Défintion de la classe CProduitBase
class CProduitBase {
// les attributs
protected:
short m_Categ;
string m_Code;
// les fonctions utilisées
public:
// permet de récupérer la catégorie
short getCateg();
// permet de récupérer le code le l'objet
string getCode();
// permet de définir une catégorie
void setCateg(short uneCateg);
// le modificateur de m_Code
virtual void MakeCode(int NumProd, int numPal) = 0;
// Destructeur nécessaire à la libération des zones mémoires dynamiques.
virtual ~CProduitBase();
};
#endif
et CProduit qui utilise la classe CproduitBase, c'est ici que je n'arrive pas a reprendre les attributs de CProduitBase :
CProduit.h :
#ifndef CPRODUIT_H
#define CPRODUIT_H
// la taille permet de générer un nombre aléatoire.
#define TAILLE 20
#include "CProduitBase.h"
#include "BiblioStd.h"
// Défintion de la classe CProduit
class CProduit : protected CProduitBase {
// les attributs
private:
float m_Long;
float m_Larg;
float m_Haut;
// les fonctions
public:
//le constructeur
CProduit();
//les différents accesseurs des attributs
float getLargeur();
float getLong();
float getHauteur();
//la redéfinition de la classe Make Code
void MakeCode(int NumProd, int NumPal);
// la fonction "amie"
friend ostream &operator << (ostream &os, CProduit& unProd);
};
#endif
et enfin, CProduit.cpp
#include "CProduit.h"
/* le constructeur de la classe*/
CProduit :: CProduit(){
m_Long = rand()%TAILLE;
m_Haut = rand()%TAILLE;
m_Larg = rand()%TAILLE;
}
/***********************/
/*l'accesseur a la variable m_Larg*/
float CProduit :: getLargeur(){
return m_Larg;
}
/***********************/
/* l'accesseur de la variable m_Long*/
float CProduit :: getLong(){
return m_Long;
}
/***********************/
/* l'accesseur de la variable m_Haut*/
float CProduit :: getHauteur(){
return m_Haut;
}
/***********************/
/*il s'agit du modificateur de l'attribut m_Code*/
void CProduit :: MakeCode(int NumProd, int NumPal){
string oss;
oss += " << Produit <<";
oss += NumProd;
oss += " << -Cat <<" ;
oss += NumPal;
oss += " << Pal <<";
oss += m_Categ;
m_Code = oss;
}
/***********************/
/*fonction amie qui va permettre d'afficher un Produit en appelant le
produit voulut directement*/
ostream &operator<< ( ostream &os, CProduit& unProd ){
os << " La longeur : " << unProd.m_Long << endl;
os << " La largeur : " << unProd.m_Larg << endl;
os << " La hauteur : " << unProd.m_Haut << endl;
os << " laCatégorie : " << unProd.m_Categ <<endl;
os << " le Code : " << unProd.m_Code <<endl;
return os;
}
/***********************/
je comprends ceux qui abandonnent avant la fin de la lecture, et je suis navré d'en arriver la...^^