我要实现模板专业化,在实现专用模板类的构造函数时编译器会产生一些错误。以下是我的代码:模板专业化实现
#include <iostream>
using namespace std;
// class template
template <typename T>
class mycontainer
{
T element;
public:
mycontainer (T arg);
T increase() {return ++element;}
};
// class template specialization
template <>
class mycontainer <void> {
int element;
public:
mycontainer (int arg);
char uppercase()
{
return element;
}
};
template<typename T> mycontainer<T>::mycontainer(T arg){
cout << "hello T" << endl;
}
template<typename T> mycontainer<void>::mycontainer(int arg){
cout << "hello Empty" << endl;
}
int main() {
mycontainer<int> myint (7);
mycontainer<void> myvoid (6);
cout << myint.increase() << endl;
return 0;
}
的代码生成这些错误:
test.cpp:31:22: error: prototype for ‘mycontainer<void>::mycontainer(int)’ does not match any in class ‘mycontainer<void>’
test.cpp:16:26: error: candidates are: mycontainer<void>::mycontainer(const mycontainer<void>&)
test.cpp:19:5: error: mycontainer<void>::mycontainer(int)
就如何解决这些错误的任何线索?