我有一段時間沒有使用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;
};
我該如何使用traits來限制這個泛型容器只包含類'ContainerItem'的子類呢?
此模板的標準(C++ 0x)工具是`template struct is_base_of;` –
2011-01-21 16:35:01
is_base_of也可以在boost和tr1中找到,用於缺少C++ 0x支持的編譯器 – Grizzly 2011-01-22 13:03:04