template <class T>
class MyClass
{
public:
bool Execute(T entity);
}
template <>
MyClass<char*>
{
public :
bool Execute(char* entity);
}
/*分离出来的实现*/
template <class T>
bool MyClass<T>::Execute(T entity)
{
}
template <>
bool MyClass<char*>::Execute(char* Entity)
{
}
9 个解决方案
#1
编译器不支持。。
#2
模板这东西,何必自找麻烦地要分离出来写呢。
#3
声明文件里要包含(include)定义文件
#4
分离出来后要加类模板的那个文件名吧
#5
1楼同学:
我只是分离出来,但并没有把实现放到.cpp文件里。如果我只是去掉那个特化的函数,不动其他地方,还是能编译的。
2楼同学:
很久以前学的c++,最近要用才开始复习,想到c++标准是希望能分离的,不知道如今编译器是否大多支持。
而且它报错是说找不到匹配的模板函数,只是特化的那个函数被认为有错。
3,4楼同学:
我把声明和实现都放在Task.h里了,Task.cpp除了include "Task.h",啥都没写
我只是分离出来,但并没有把实现放到.cpp文件里。如果我只是去掉那个特化的函数,不动其他地方,还是能编译的。
2楼同学:
很久以前学的c++,最近要用才开始复习,想到c++标准是希望能分离的,不知道如今编译器是否大多支持。
而且它报错是说找不到匹配的模板函数,只是特化的那个函数被认为有错。
3,4楼同学:
我把声明和实现都放在Task.h里了,Task.cpp除了include "Task.h",啥都没写
#6
编译器的问题,如果你将函数的实现放到特化的类里面去是没有问题的。似乎我用过的vs2008,dev-cpp都不支持将特化的类的成员函数的实现写出来。
#8
下面这样就行了。
template <class T>
class MyClass
{
public:
bool Execute(T entity);
};
template <>
class MyClass<char*>
{
public :
bool Execute(char*);
};
template <class T>
bool MyClass<T>::Execute(T entity)
{
return false;
}
bool MyClass<char*>::Execute(char*)
{
return false;
}
int main ()
{
return 0;
}
#9
人家就是这样规定的...
#1
编译器不支持。。
#2
模板这东西,何必自找麻烦地要分离出来写呢。
#3
声明文件里要包含(include)定义文件
#4
分离出来后要加类模板的那个文件名吧
#5
1楼同学:
我只是分离出来,但并没有把实现放到.cpp文件里。如果我只是去掉那个特化的函数,不动其他地方,还是能编译的。
2楼同学:
很久以前学的c++,最近要用才开始复习,想到c++标准是希望能分离的,不知道如今编译器是否大多支持。
而且它报错是说找不到匹配的模板函数,只是特化的那个函数被认为有错。
3,4楼同学:
我把声明和实现都放在Task.h里了,Task.cpp除了include "Task.h",啥都没写
我只是分离出来,但并没有把实现放到.cpp文件里。如果我只是去掉那个特化的函数,不动其他地方,还是能编译的。
2楼同学:
很久以前学的c++,最近要用才开始复习,想到c++标准是希望能分离的,不知道如今编译器是否大多支持。
而且它报错是说找不到匹配的模板函数,只是特化的那个函数被认为有错。
3,4楼同学:
我把声明和实现都放在Task.h里了,Task.cpp除了include "Task.h",啥都没写
#6
编译器的问题,如果你将函数的实现放到特化的类里面去是没有问题的。似乎我用过的vs2008,dev-cpp都不支持将特化的类的成员函数的实现写出来。
#7
#8
下面这样就行了。
template <class T>
class MyClass
{
public:
bool Execute(T entity);
};
template <>
class MyClass<char*>
{
public :
bool Execute(char*);
};
template <class T>
bool MyClass<T>::Execute(T entity)
{
return false;
}
bool MyClass<char*>::Execute(char*)
{
return false;
}
int main ()
{
return 0;
}
#9
人家就是这样规定的...