私はインスタンス化したくないクラスを書いています。すべてのメンバは静的です。このクラスは、マイクロコントローラの周辺機器を表します。マイコンにその周辺機器のインスタンスが1つしかないので、私はそのクラスのインスタンスを作成することに意味がありません。クラスは、その周辺機器のデータと機能だけをグループ化します。インスタンス化不可能なクラスの静的メンバーである配列のサイズを定義する方法はありますか?
クラスのデータメンバーの1つは、クラスのユーザーがコンパイル時に定義するサイズの配列です。このクラスのオブジェクトを作成できれば、コンストラクタのイニシャライザリストでconstを初期化できますが、実際にはこのクラスのインスタンスを作成したくありません。たぶん私はテンプレートを使用し、テンプレートのパラメータとして配列のサイズを設定することができますが、私はmy_class<5>::do_something()
のようなものをすべてのメンバー呼び出しに使用する必要があります。この問題を解決する簡単な方法はありますか?
class my_class
{
private:
static const int _size;
static int _array[_size];
public:
static void array_size(int size) { _size = size; }
static void do_something() { /* .... */ }
};
サイズは、コンパイル時に設定されている場合、 '静的ボイドARRAY_SIZE(int型のサイズ){_size =サイズが何であります。 } 'やるべきことは? – wally
シングルトンクラスを考えてみましょう。それは、普通の古い静的データよりもいくつかの利点があります。 –
@ n.m。もっと詳しくお聞かせください。 – rrd