【发布时间】:2014-12-11 08:23:46
【问题描述】:
我想实例化一个函数,其中模板参数类似于以下complexType。
template <class U, class type> struct complexType;
template <class type> struct complexType<double, type>
{
typedef type T;
};
template <class type> struct complexType<int, type>
{
typedef type T;
};
我在头文件中得到以下内容
template <typename U>
void XYZ(
typename complexType<U, double>::T abc);
以及cpp文件中的实现
template <typename U>
void XYZ(
typename complexType<U, double>::T abc)
{
abc = 1.0;
}
template
void XYZ(
complexType<double, double>::T abc);
不幸的是,GCC 给了我以下编译器错误消息
template-id XYZ<> for void XYZ(complexType<double, double>::T) 不匹配任何模板声明
关于如何解决这个问题的任何建议?
【问题讨论】:
-
你也不能使用
template。只使用void XYZ(complexType<double, double>::T abc); -
@RSahu 更适合简单地超载。 (上升)
-
这是一个显式实例化,所以这里需要
template。