Problème d'accès

Résolu
jimdano Messages postés 16 Date d'inscription mercredi 7 avril 2010 Statut Membre Dernière intervention 20 mars 2013 - 14 févr. 2011 à 22:06
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 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


CProduitBase.cpp :
#include "CProduitBase.h"


/* accesseur de m_Categ */

short CProduitBase :: getCateg(){

return m_Categ;

}



/*******************************/


/* accesseur de m_Code */

string CProduitBase :: getCode(){

return m_Code;

}



/*******************************/


/* Modificateur de m_Categ */

void CProduitBase :: setCateg(short uneCateg){

this->m_Categ = uneCateg;

}



/******************************/


/* Destructeur de CProduitBase */

CProduitBase :: ~CProduitBase(){

cout << 
this << endl;

}

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...^^

Merci d'avance et bonne soirée a tous !!!! =)

3 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
15 févr. 2011 à 09:26
Yop!
Et si tu changes l'héritage de protected à public?
class CProduit : public CProduitBase


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
3
jimdano Messages postés 16 Date d'inscription mercredi 7 avril 2010 Statut Membre Dernière intervention 20 mars 2013
15 févr. 2011 à 20:00
Merci, c'était tout con en fait ^^
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
15 févr. 2011 à 21:04
Il suffit souvent de 3 fois rien...

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Rejoignez-nous