begin process at 2010 03 16 08:51:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Classes et heritage


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Classes et heritage

mardi 20 janvier 2004 à 08:24:56 | Classes et heritage

Darkneon

Allo a tous,

J'ai deux classes comme suit

class ClassA {
private:
char *a1;
char *a2;
public:
void FuncA();
};

class ClassB : public ClassA {
private:
char *b1;
char *b2;
public:
void FuncB();
};

C'est que je veux realiser c'est une troisieme class (disons ClassC) qui herite de la ClassA + les variables de la ClassB.

C'est que j'ai essayer et qui n'as pas marcher
ClassC : public ClassB, public ClassA
le compilateur dit que la ClassB a deja la base de ClassA

Je suis sur que la reponse se trouve dans
ClassC : public ClassB
reste que je n'arrive pas a acceder a la variable a.
J'ai essayer ClassA::a ou ClassB::a et meme ClassB::ClassA::a???... mais le compilo rejete l'access.

Quelqu'un a une idee?


Party 'till you drop !!!
mardi 20 janvier 2004 à 09:28:26 | Re : Classes et heritage

hilairenicolas


C'est simplement parce que les membres de la classe A sont en privées, et que tu ne peux pas acceder aux membres de cette classe à ce niveau d'héritage. Soit déclare les en public, soit déclare simplement des accesseurs en public.

Sinon, la solution est bien dans ClassC : public ClassB
mardi 20 janvier 2004 à 09:32:57 | Re : Classes et heritage

vecchio56

Administrateur CodeS-SourceS
La meilleure solution n'est pas de les mettre en public mais plutot en protected qui est en gros comme private sauf que les membres sont aussi accessibles par les sous-classes
mardi 20 janvier 2004 à 09:37:44 | Re : Classes et heritage

hilairenicolas


Euh ... t'es sur de toi vecchio pour le protected ? dans mes souvenirs, le protected n'est accessible que pour la classe qui hérite directement.

Là, la classe C herite de la classe B qui hérite de la classe A.

A confirmer
mardi 20 janvier 2004 à 11:18:54 | Re : Classes et heritage

vecchio56

Administrateur CodeS-SourceS
Vérification faite, ca marche bien avec les protected

class ClassA
{
protected:
int a;
};

class ClassB : public ClassA
{
protected:
int b;
};

class ClassC: public ClassB
{
public:
void f();
};

void ClassC::f()
{
a = b = 0;
}
mardi 20 janvier 2004 à 11:45:25 | Re : Classes et heritage

hilairenicolas


je viens de vérifier aussi, mais dans le cas où tu utilises ta classe dans ton main par exemple, ca ne passe pas, il faut alors écrire des accesseurs

void main()
{
ClassC c;
c.a = 1;
}

provoque l'erreur de compilation :

error C2248: 'a' : cannot access protected member declared in class 'ClassA'

mardi 20 janvier 2004 à 20:11:30 | Re : Classes et heritage

vecchio56

Administrateur CodeS-SourceS
Ca c'est normal, et ca n'est pas du à l'héritage. En dehors d'une classe, on n'accède qu'aux membres publics.
mardi 20 janvier 2004 à 20:39:19 | Re : Classes et heritage

Darkneon

Merci ca marche bien.

J'ai un autre probleme maintenant. Je veux que le constructeur dans la ClassC appelle le constructeur de la ClassA sans passer par celui de la ClassB. Est-ce possible, car j'ai essayer plusieur chose et rien semble marcher?


Party 'till you drop !!!
mercredi 21 janvier 2004 à 20:29:11 | Re : Classes et heritage

vecchio56

Administrateur CodeS-SourceS
Je pense que ce n'est pas possible, mais ca ne doit pas être vraiment nécessaire
jeudi 22 janvier 2004 à 06:14:59 | Re : Classes et heritage

Darkneon

En faite, j'ai eu besoin de le faire dans mon programme.

Etk, j'ai cree une autre function et contourner le probleme.

Party 'till you drop !!!


Cette discussion est classée dans : public, char, classes, classa, classb


Répondre à ce message

Sujets en rapport avec ce message

Question sur l'heritage et classes [ par Darkneon ] Salut,J'aimerai savoir si c'est possible qu'un changement de donnee dans une classe de base affecte les 2 classes heritees?Par exemple :#include &lt Question con [ par coyote ] J'ai 2 classes: ClasseA et ClasseBClasseA possede une variable de type ClasseB, et ClasseB possede une variable de type ClasseA. Comment faire pour qu Accès à une instance [ par Mycado ] Salutations,J'ai mon main, et deux classes (classA et classB). Je crée une instance de classA nommée cal dans mon main.Mon problème est, que j'aimerai Possibilité de contourner le spécificateur private ?!! [ par Chatbour ] Salut à tous et à toutes exécutez ce code et vous verrez que public_string pointe sur private_string : est-ce un bug dans C++ ? code testé sous Window Creer objet avec classe heritée [ par jonas03 ] Bonjour à tous,Voici mon problème : j'ai une classe personne et 2 classe dérivées interne et externe mais je veut créer dans mon main une personne mai [dev-cpp] probleme de compilation d'un fichier de classes [ par gergalp ] Voilà, alors, j'ai un fichier de classes qui est inclus dans le fichier principal ou j'ai ma fonction main(). Quand je veux compiler, j'ai l'erreur : client smtp probleme [ par lombredudragon ] Voila j'ai trouver un joli code sur le web. J'ai fait le menage et j'ai supprimer l'interface graphique.Donc mon but final c'est d'envoyer un fichier Problème avec ShellExecute() [ par F_o_X ] Bonsoir a tousVoila, je voulais faire un programme qui est en rapport avec les moteur de recherche, mais pour que mon programme soit au point, je dois help me !!! [ par pascal13 ] j arrive pas a compiler mon programme...je sais que g qlq que souccis au niveau de la sauvegarde des données sur le fichier toutes remarques seront le char* Hellppppp [ par Mickylord ] Ma question est :Prenons :char* titre;int compteur;char* ensemble;Comment faire pour que "ensemble" regroupe les deux variables, sachant que :char* ti


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,156 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales