C++の高度な機能をしばらく使用せず、C++の知識をリフレッシュしています。 特質とポリシーベースのプログラミングというコンセプトは、私の周りを頭に浮かべるこのクラスのC++の特性例
私はそれを変更したいと思います。私はジェネリックコンテナを書いています。コンテナが特定の基本クラスから派生したクラスだけを格納するというポリシーを強制したいと思います。これは、ベクター境界外のアイテムにアクセスしようとすると、コンテナが(スローするのではなく)無効なオブジェクトを返すためです。
template <class T>
class GenericContainer
{
private:
typedef std::vector<T> TypeVect;
void addElement(const T& elem);
TypeVect m_elems;
public:
unsigned int size() const;
T& elementAt(const unsigned int pos);
const T elementAt(const unsigned int pos) const;
};
この汎用コンテナを「ContainerItem」クラスのサブクラスのみを含むように制限するにはどうすればよいですか?
このための標準的な(C++ 0X)機能は 'テンプレート<クラスベース、派生クラス>構造体is_base_ofである' –
is_base_ofはまた、今のためのC++ 0X支持 – Grizzly