私はC++の初心者です。基本的には、STLコンテナをテンプレートとして使用して、その中に渡されている型が格納されているかどうかを判断しようとしています。私はクラステンプレートを使用する必要があるか、独自の構造体または何を定義する必要があるかわかりません。C++テンプレートSTLコンテナ
ここで私が達成したいかについて、いくつかの解説と一緒に、私が持っているもの、実質的です:これはことも可能である場合
std::deque<template class T> messages; <--- ???
//the goal being not to store ANY type in this deque, but to somehow
//template it for each type that needs to be stored
//e.g. a different deque for an int, bool, ADT, etc.
template<class T> bool StoreMessage(T const &messageToStore){
messages<T>.push_back(messageToStore);
}
私もこれにアプローチする方法は考えているかが、私は本当にドンロットがあるので、格納する必要がある各タイプの関数を記述しなければならない。またはvoid *を使用してください。私は安全のためにそれをしたくないので、プロセスはまったく同じになるとはいえ、各タイプの処理方法を明示的に定義する必要があります。
ありがとうございます!参照によるコンテナと要素の両方を渡し、それを呼び出すに
template <typename T>
bool store_message(const T &message, std::deque<T> &container) {
container.push_back(message);
}
:
'std :: deque'は、私があなたに完全に誤解していない限り、あなたが望むようにすでに動作します。 – Galik
標準**テンプレート**ライブラリ(これはもはやそれの正しい名前ではありません)(https://stackoverflow.com/questions/5205491/whats-this-stl-vs-c-standard-library-fight- all-about))は、ほとんどの(すべての)コンテナに対してすでにテンプレートを使用しています。 – CoryKramer
@Galikデュークにはすでにどの型も格納できることがわかりましたが、デキュ自体がテンプレート化されているとは思いませんでした。 目的は、メソッドに渡されるものを格納するためにテンプレート化されたdequeメンバー変数を持つことです。メンバー変数としてdequeを使用すると、Tが自分のクラスの型ではないのでコンパイラエラーが発生します。 –
dlar