L'accès de la Base de variable de classe de l'enfant de la méthode de classe
Comment puis-je accéder à la classe de base variable d'un enfant de méthode? J'obtiens une erreur de segmentation.
class Base
{
public:
Base();
int a;
};
class Child : public Base
{
public:
void foo();
};
Child::Child() :Base(){
void Child::foo(){
int b = a; //here throws segmentation fault
}
Et dans une autre catégorie:
Child *child = new Child();
child->foo();
Ce code ne compile pas.
Veuillez corriger votre code, il est évident que la méthode foo est la mise en œuvre de l'Enfant::foo .
c'est un peu dur de voter pour fermer cette question, donner de l'OP de l'occasion pour corriger le code, apparaît comme une question valable,...
toto est déclarée comme une méthode privée. Je me demande comment vous avez obtenu autour de l'appeler?
Eh bien, vous n'avez pas l'aider beaucoup avec cette édition. Encore ne ressemble pas à un code valide.
Veuillez corriger votre code, il est évident que la méthode foo est la mise en œuvre de l'Enfant::foo .
c'est un peu dur de voter pour fermer cette question, donner de l'OP de l'occasion pour corriger le code, apparaît comme une question valable,...
toto est déclarée comme une méthode privée. Je me demande comment vous avez obtenu autour de l'appeler?
Eh bien, vous n'avez pas l'aider beaucoup avec cette édition. Encore ne ressemble pas à un code valide.
OriginalL'auteur Mattia | 2011-05-31
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas une bonne pratique pour faire une variable de classe public. Si vous souhaitez accéder à
a
deChild
vous devriez avoir quelque chose comme ceci:Je n'aurais pas accès
a
directement. Il serait mieux si vous faites unpublic
ouprotected
méthode de lecture poura
.Dans le cas où c'est un objet, un getter est un signe possible d'un problème de conception. Dans le cas où c'est une structure de données, les getters et les setters pouvez faire des choses comme les données bindng possible, et ils peuvent suivre des conventions, comme java beans, permettant ainsi une meilleure prise en charge des outils. structures de données modélisées comme des classes en C++ laisser le choix au développeur, cependant, que les getters et les setters ne produisent pas de technique directe de la prestation.
OriginalL'auteur Kanopus
Je doute si votre code, même compilé!
OriginalL'auteur hackworks
Résolu! le problème était que j'étais l'appel de l'Enfant::foo() (par un signal&slot de connexion) à partir d'un non encore existante de l'objet.
Merci pour le aswers.
OriginalL'auteur Mattia