Я хочу в своем классе создать два конструктора:
/******MyClass.h********/
class MyClass : public QMainWindow
{
Q_OBJECT
public:
MyClass(QWidget *parent = 0, Qt::WFlags flags = 0); //конструктор №1
MyClass(CSharedV &v, QWidget *parent = 0, Qt::WFlags flags = 0); //конструктор №2
...
}
/******MyClass.cpp******/
MyClass::MyClass(QWidget *parent, Qt::WFlags flags)
:QMainWindow(parent, flags)
{
sharedDataModel = new SharedDataModel(this);
ui.setupUi(this);
ui.treeView->setModel(sharedDataModel);
ui.treeView->header()->setResizeMode(0, QHeaderView::Stretch);
ui.treeView->header()->setResizeMode(1, QHeaderView::Stretch);
}
MyClass::MyClass(CSharedV &v, QWidget *parent, Qt::WFlags flags)
:QMainWindow(parent, flags)
{
MyClass(parent, flags);
setShared(v);
}
это скорее вопрос по С++
Вынеси всю инициализацию в отдельную функцию:
void MyClass::Init()
{
sharedDataModel = new SharedDataModel(this);
ui.setupUi(this);
ui.treeView->setModel(sharedDataModel);
ui.treeView->header()->setResizeMode(0, QHeaderView::Stretch);
ui.treeView->header()->setResizeMode(1, QHeaderView::Stretch);
}
/******MyClass.cpp******/
MyClass::MyClass(CSharedV &v, QWidget *parent, Qt::WFlags flags)
:QMainWindow(parent, flags)
{
MyClass(parent, flags);
setShared(v);
}
Delphist, учи матчасть
тебе все правильно объяснили zamnach и AD
Обобщим?
1) Конструктор это не функция, его нельзя вызвать.
2) Это ограничение есть в C++, в Java его нет (можно использовать такие штуки как this(), super() )
3) Может быть ограничение уберут в upcoming стандарте.
А вообще это вопрос из замечательного FAQ:
http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.3
на русском http://quirks.chat.ru/cpp/faq/#s10p3
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)