2017-07-21 12 views
0

私はマイクロコントローラで現在C++を使用していますが、適切な実装がわからないところに問題があります:C++マイクロコントローラグローバルクラス/シングルトン?

私は、たとえばシリアルポートの設定を担当するシリアルインターフェイスクラスを使用していますボー、データビット...)を設定します。初めにマイコンの初期化段階でしかやりたいと思っていないので、クラスでどのように処理するのか分かりません。

初期化フェーズで作成するグローバルクラス/シングルトンを作成します(このようにしてシリアルパラメータを保持できます)。または、シリアルインターフェイスを使用する必要があるたびにクラスを作成する必要がありますシリアルライン - コンストラクタを空のままにしますか?)

ありがとうございます。

答えて

1

すべてのオプションが有効なので、意見を求めています。
私は構成と必要なリソースを格納するためのシングルトンを作成することは良いアプローチだと考えています。この方法で、RAIIイディオムを実装し、必要なときに簡単にアクセスできます。

+0

真実、それはデザインの質問によく似ています。私の目標は、さまざまな意見を見て評価することでした。早速のご返事ありがとうございます! –

2

グローバル変数とシングルトンを避けようとしています。

ポートを開くためのパス名と設定を受け付けるコンストラクタと、ポートを閉じるデストラクタを持つクラスを定義しました。次に、私はstaticのローカルインスタンスをmain(...)に宣言し、そのポートを使用する必要がある他のクラスのコンストラクタにその参照を渡しました。

グローバルインスタンスの宣言やシングルトンを得るためのグローバル関数とは対照的に、mockシリアルポートへの参照でテストが渡された他のクラスの単体テストを書くことができましたオブジェクト。

+0

私はこのアプローチが好きです* thumbsUp *。 –