我想创建一个带静态函数的模板类
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«
答案 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);
如果您只想模拟函数,可以删除外部模板。