C ++类模板专门化变量

时间:2017-05-24 23:48:08

标签: c++ templates conditional

我有 Pool 类模板,可以这样说:

template <class T>
class Pool {
public:
    static int iPoolUpperBound;
    static int iPoolSize;
    static T **pItem;
    T();
    ~T();
}

当我需要某个类的对象池时,我只使用该模板。我还有 Item 类,我需要将向量添加到当前的 Pool 模板,但该向量应仅在我引用/时才会出现使用 Item 类。

简单if (T == Item)不会显而易见,我已经尽力有条件地将该向量添加到Pool模板

如果我可以有条件地在 Pool 类模板成员函数中添加一行或两行而不会重载它,也会有所帮助。

1 个答案:

答案 0 :(得分:0)

  

如果我可以在Pool类模板成员函数中有条件地添加一行或两行而不重载它也会有所帮助。

例如,您只能重载pItem

struct Item
 { };

template <typename>
struct proItem
 { };

template <>
struct proItem<Item>
 { static Item ** pItem; };

Item ** proItem<Item>::pItem;

template <typename T>
struct Pool : public proItem<T>
 {
   static int iPoolUpperBound;
   static int iPoolSize;
 };


int main()
 {
   Pool<Item>::pItem = nullptr;   // compile
   //Pool<int>::pItem = nullptr;  // compilation error
 }