Вот мой фрагмент кода:
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;
}
При вызове конструктора Overrided LoginRequest
LoginRequest *test=new LoginRequest(doc);
Я пришел с таким результатом:
Request: Hello World
LoginRequest: Hello World with QDomDocument
Request: Hello World
LoginRequest: Hello World
Очевидно, что обаконструктор LoginRequest, называемый REquest constructor.
Есть ли какой-нибудь способ избавиться от этой ситуации?
Я могу создать другую функцию, которая выполняет ту работу, которую я хочу сделать, и оба конструктора вызывают эту функцию.Но интересно, есть ли решение?
Редактировать: http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.3