例如,我有这样的代码:
.H-文件:
template <typename T1>
class Templ
{
public:
template <typename T>
T foo (T t);
};
的.cpp文件:
template <typename T1>
template <typename T>
T Templ<T1>::foo (T t)
{
qDebug() << "Non-specialised template";
return t;
}
template <>
template <>
int Templ<void>::foo (int t)
{
qDebug() << "Specialised class template void> & method template <int>";
return t;
}
如果我这样打电话:
Templ <void>t;
int i = t.foo<int>(1);
我会得到预期的“Specialized class template void&gt;&amp; method template”消息,但如果我想调用非专业化的函数:
Templ <float>t;
int i = t.foo<bool>(1);
我将得到未定义的引用链接器错误。如何调用非专业函数?
另外,如何定义非专业类的专用功能?我想做像
这样的事情template <typename T1>
template <>
int Templ<T1>::foo (int t)
{
qDebug() << "Specialised class template void> & method template <int>";
return t;
}
但是,很明显,它不会编译。