我确信它是可能的,但我不能这样做,这是:我如何在非模板类中定义函数模板?我试过这样的事情:
class Stack_T
{
private:
void* _my_area;
static const int _num_of_objects = 10;
public:
// Allocates space for objects added to stack
explicit Stack_T(size_t);
virtual ~Stack_T(void);
// Puts object onto stack
template<class T>
void put(const T&);
// Gets last added object to the stack
template<class T>
T& get()const;
// Removes last added object from the stack
template<class T>
void remove(const T&);
};
template<class T> //SOMETHING WRONG WITH THIS DEFINITION
void Stack_T::put<T>(const T& obj)
{
}
但它不起作用。我得到这个错误的消息:
'错误1错误C2768:'Stack_T :: put':非法使用显式模板参数' 谢谢
答案 0 :(得分:12)
不要将<T>
放在函数名后面。这应该有效:
template<class T>
void Stack_T::put(const T& obj)
{
}
如果函数定义不在头文件中,则仍然无效。要解决此问题,请使用以下方法之一: