带静态函数的模板类

时间:2012-04-28 12:52:40

标签: c++

我想创建一个带静态函数的模板类

template <typename T>
class Memory
{
 public:
  template < typename T>
  static <T>* alloc( int dim )
  {
    T *tmp = new T [ dim ];
    return tmp;
  };
}

但我会永远得到

int *a = Memory::alloc<int>(5)

我不知道该发生什么事。

 »template<class T> class Memory« used without template parameters
 expected primary-expression before »int«
 Fehler: expected »,« or »;« before »int«

1 个答案:

答案 0 :(得分:6)

当您可能只想模拟其中一个时,您正在模仿类和函数。

这是你的意思吗?

template <typename T>
class Memory
{
 public:
  static T* alloc( int dim )
  {
    T *tmp = new T [ dim ];
    return tmp;
  };
}

int *a = Memory<int>::alloc(5);

这是两个正确的版本:

template <typename T>
class Memory
{
 public:
  template <typename U>
  static U* alloc( int dim )
  {
    U *tmp = new U [ dim ];
    return tmp;
  };
}

int *a = Memory<float>::alloc<int>(5);

如果您只想模拟函数,可以删除外部模板。