私はハードウェアの専門家ですが、使用しているチップ設計ツールでは、C++コードを作成する必要があります。私はオブジェクト指向プログラミングに精通していません。私はCをうまく理解していますが、私が求めているのは、cq
目前のタスクを実行するためにクラス(と呼ばれる)を構成する方法の説明です。
指定されたデータ型と指定されたサイズのキューを生成できるようにしたいと思います(生成後に変更されるべきではありません)。理想的には、これはこのように達成されます...
my_queue = new cq(uint8_t, 6);
...これは、6つの8ビット符号なし整数の配列(またはベクトル)を生成します。
次に、次のように、要素を最後に挿入し、キューの先頭にある要素を返すメソッドが必要です。
uint8_t front;
front = my_queue.advance(28);
これを実現するには、どのような構造が必要ですか?データ型は可変なので、テンプレートが必要ですか?または、ジェネリッククラスがあり、各データ型のクラスがその構造を継承する必要がありますか?
ありがとうございました!
編集:以下の回答からの入力を使用して、私は次のことを思いついた:
template <class type>
template <class size>
class CQ {
private:
// Allocates a queue with type and size
// specified by template arguments.
std::queue<type> cycle_queue(size, 0);
public:
// Inserts input to the end of the queue;
// removes and returns the front element.
type advance(type in){
type out = cycle_queue.front();
cycle_queue.push_back(in);
cycle_queue.pop_front();
return out;
}
}
次に、私の質問は次のようになります...メインのC ++プログラムでこれをインスタンス化するにはどうすればよいですか?私はこれを試しましたが、うまくいきませんでした:
CQ<uint8_t><6> my_queue;
my_queue.advance(28);
再度、感謝します!