1
私はオブジェクトのコレクションを持っています。私のソフトウェアで行われた最も重要な操作を登録するQVector<ApplicationStates>
と言います。基本的に、このオブジェクトはREDO/UNDO操作を処理するためのものです。アプリケーションは多くの委任オブジェクトを使用して構築されます。登録されなければならない操作は、これらのオブジェクトの多くにあります。そのように、私は常に以下の形式のオブジェクトのコレクションを渡しています。オブジェクトの伝播
class AWidget : public QWidget{
AWidget(QVector<ApplicationStates>* states, QWidget* parent = nullptr);
...
私は醜いようです。私は2つのソリューションについて考えます:
- シングルトン;
QVector
を静的グローバル変数として宣言するだけです(グローバル変数は悪いと読みました)。
誰かに提案がありますか? あなたの答えをありがとう。
QVectorのインスタンスはいくつありますか?ただ1つしか存在せず、参考にして渡す場合は、シングルトンの使用を検討してください。私は静的なグローバルを使用するだけではなく、コードのリエントラントのようなことを防ぎ、複数のスレッドを使用するのが難しくなります。複数のインスタンスがある場合は、それを必要とする関数への引数としてインスタンスを渡すほうがよいでしょう(ただし、ポインタではなく参照によって)。 –
Peter
@peterただ1つのインスタンスがあります – Papipone
シングルトンはグローバルと同じ問題のほとんどを持っています。 – aschepler