Voici mon extrait de code:Constructor surcharge problème en C++ Héritage
class Request
{
public:
Request(void);
………..
}
Request::Request(void)
{
qDebug()<<"Request: "<<"Hello World";
}
class LoginRequest :public Request
{
public:
LoginRequest(void);
LoginRequest(QDomDocument);
……………
}
LoginRequest::LoginRequest(void)
{
qDebug()<<"LoginRequest: "<<"Hello World";
requestType=LOGIN;
requestId=-1;
}
LoginRequest::LoginRequest(QDomDocument doc){
qDebug()<<"LoginRequest: "<<"Hello World with QDomDocument";
LoginRequest::LoginRequest();
xmlDoc_=doc;
}
Lorsque le constructeur d'appel de Overrided LoginRequest
LoginRequest *test=new LoginRequest(doc);
je suis venu avec ce résultat:
Request: Hello World
LoginRequest: Hello World with QDomDocument
Request: Hello World
LoginRequest: Hello World
Il est évident que les deux constructeur de LoginRequest appelé constructeur REquest.
Y a-t-il un moyen d'éviter cette situation?
Je peux construire une autre fonction qui fait le travail que je veux faire et que les deux constructeurs appellent cette fonction. Mais je me demande s'il y a une solution?
Edit: http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.3
Pourquoi voudriez-vous faire face à cette situation? Vous créez deux 'LoginRequest's. Évidemment, cela signifie que vous avez 2 demandes, et le ctor de demande devrait être appelé deux fois. – MSalters
En fait, je voulais créer un LoginRequest, mais maintenant je vois ma faute. – metdos