2015-09-07 1 views
-2

J'ai une classe pour laquelle je crée un constructeur "A". Ensuite, je crée une autre classe avec un constructeur "B". Comment est-ce que j'appelle le constructeur "B" du constructeur d'une classe différente i.e "A" employant le langage C++?Appel d'un constructeur à partir d'un constructeur de classe différente

+4

'A :: A() {B(); } 'Techniquement, cela fait exactement ce que vous demandez, bien que j'ai le sentiment fort que ce n'est pas vraiment ce que vous essayez de faire (le problème comme indiqué a peu de sens). –

+0

On ne sait absolument pas ce que vous essayez d'atteindre. Essayez-vous d'instancier B dans le constructeur de A? Avez-vous un champ membre de type B dans la classe A? Le constructeur est appelé lors de la création de l'instance de classe (objet). Où est votre instance? –

Répondre

1

Dans les membres C++ ou les champs d'une classe qui sont eux-mêmes des variables d'objet, leur constructeur est automatiquement appelé par le compilateur, juste quand la classe get est instanciée, c'est-à-dire quand son propre constructeur a été appelé. L'ordre d'instanciation des objets en C++ est comme ceci, le constructeur de la classe de base est appelé en premier, puis les variables membres, puis la classe la plus dérivée qui est votre classe.

2

Si A hérite de B, vous pouvez appeler le constructeur de la classe de base à partir d'un constructeur de A. En C++ 11 vous avez plus de flexibilité avec ceci et vous pouvez utiliser des constructeurs de délégation. Sinon, cette question n'a pas beaucoup de sens. Un constructeur est un type spécial de fonction qui n'est appelé que lorsque vous créez un nouvel objet. Vous ne pouvez pas l'appeler sauf lorsque vous le faites, et généralement vous appelez un constructeur quand vous voulez créer un nouvel objet - appeler le constructeur n'est pas votre but, obtenir le nouvel objet.

1

Ceci servira votre but.

class A { 
    public: 
    A(){ 
//your code 
     } 
}; 



class B{ 
public : 
B():A(){ 
//your code 
} 
}; 
1

si les deux classes ne sont pas en relation parent-enfant, alors vous pouvez composer la classe A dans B. ci-dessous est un exemple.

class B{ 

public: 
    B(){ 
     cout<<"Class B constructor"<<endl; 
    } 
}; 

class A{ 
    B pbj; 
public: 
    A(){ 
     cout<<"Class A Constructor"<<endl; 
    } 
}; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 

    A obj1; 

    return 0; 
}