我有一个模板类Test,我试图在一个单独的头文件中定义以下函数:
template<typename T>
T dtest(const int, std::map<int, Test<T> >& y);
但是我收到以下错误:
'测试'未在此范围内声明
模板参数2无效
模板参数4无效
答案 0 :(得分:1)
鉴于你断言定义Test<T>
的标题包含在声明dtest
的标题中,我猜你有一个循环包含:Test<T>
标题也是包括dtest
标题。
答案 1 :(得分:0)
#include <map>
template<class T>
class Test{};
template<typename T>
T dtest(const int, std::map<int, Test<T> >& y);
只要包含Test和map的定义,这就编译好了;代码很好。