FaultsTablemanager という名前のクラスが 1 つあり、2 つのコンストラクターがあります。
class FaultsTableManager : public QObject
{
Q_OBJECT
public:
FaultsTableManager(MainWindow* mainW,
QMutex* mu,
QWidget* parentPa,
QTableWidget* tabA,
QRadioButton* sel1,
QRadioButton* sel2,
QQueue<RDIU*>* que,
QTableWidget* tabDe,
QWidget* parentDe,
QLabel* nameLab,
QLabel* timeLab);
FaultsTableManager(MainWindow* mainW,
QMutex* mu,
QWidget* parentPage1,
QTableWidget* tabA,
QRadioButton* sel1,
QRadioButton* sel2,
QList<RDIU*>* list1,
QList<RDIU*>* list2,
QTableWidget* tabDe,
QWidget* parentDe,
QLabel* nameLab,
QLabel* timeLab);
...
}
次のように、最初のコンストラクターを2番目のコンストラクターで再利用したい:
FaultsTableManager::FaultsTableManager(MainWindow* mainW,
QMutex* mu,
QWidget* parentPa,
QTableWidget *tabA,
QRadioButton *sel1,
QRadioButton *sel2,
QList<RDIU*> *list1,
QList<RDIU*> *list2,
QTableWidget* tabDe,
QWidget* parentDe,
QLabel* nameLab,
QLabel* timeLab)
{
FaultsTableManager(mainW,
mu,
parentPa,
tabA,
sel1,
sel2,
NULL,
tabDe,
parentDe,
nameLab,
timeLab);
// table = tabA;
queue = NULL;
list = list1;
errList = list2;
}
しかし、コード行をtable = tabA;
コメントのままにしておくと、メンバーtable
は初期化されません (後で使用できません)。
したがって、最初のコンストラクターの呼び出しはオブジェクトでは機能せず、コンストラクター関数に格納されていない新しい別のオブジェクトのみが機能すると思います。
しかし、サブクラスのベース カルスのコンストラクターの呼び出しを見たことがあります。これは、このメソッドを使用する理由である同じオブジェクトで動作します。で再利用する
ことは可能ですか?constructor A
constructor B
そうでない場合は、冗長すぎるように思われ、この冗長性を解決するためのより良い方法があると思います。