template < typename T > class allocate
{
public:
allocate(){}
~allocate(){}
public:
T* alloc() { return new T; }
  ....
};

template < typename T, allocate< typename ta_class<T>::tag_unit > *_pal > class ta_class
{
public:
typedef struct tag_unit
{
T _ocore;
}unit, *lp_unit;
private:
allocate< unit > *_palloc;
public:
  ta_class() { _palloc = _pal; }
.......
};

初学模板,想实现这种模板类内部的类作为自身模板类参数.但是编译过不去,求帮助

推荐图书

  • C++ Primer中文版(第4版)
  • More Effective C++:35个改善编程与设计的有效方法(中文版)
  • 设计模式:可复用面向对象软件的基础


1个回答

模板不是那样用的,你可以以下面的模子为起点,看看能不能达到你的目的。

 template <typename t> class allocate
{
 public:
 ~allocate () { }
  allocate () { }
 public:
  t* alloc () { return new t; }
};

template < typename t, template <typename> class alloc = allocate>
class ta_class
{
 struct tag_unit { };

 private :
 alloc<tag_unit> m_alloc;
};

int main ()
{
 ta_class<int> test;
 return 0;
}