[英]Declaration of templated class member function returning a map
在VC ++ 2015中,我有一个未模板化的类,该类应具有返回地图的模板化成员函数。
这是一些代码:
class Registry
{
template<class configclass>
std::map<std::wstring, configclass> enumerateSubKeys(std::wstring subKeyName);
}
但是编译器会抛出错误消息:
错误C2988:无法识别的模板声明/定义
错误C2143:语法错误:缺少“;” 在“ <”之前
错误C2238:“;”之前的意外令牌
错误C2059:语法错误:“ <”
我认为我的问题是必须使用必须固定/未模板化wstring的映射,但是第二个参数是我的模板类。
当然,我遵循了编译器的建议,但这并没有让我进一步。
您需要#include <map>
并在类声明的末尾添加分号。
正如@Kevin和@juanchopanza在评论中指出的那样,您只是缺少分号和可能包含的内容。 使用VS2013中的以下程序:
class Registry
{
template<class configclass>
std::map<std::wstring, configclass> enumerateSubKeys(std::wstring subKeyName);
}
int main()
{
}
我得到了您列出的各种错误:
错误C2143:语法错误:缺少“;” 在“ <”之前
错误C2238:';'之前的意外标记
错误C2988:无法识别的模板声明/定义
错误C2059:语法错误:'<'
并且:
错误C2039:“地图”:不是“ std”的成员
一旦为std::map
添加include,错误将减少:
#include <map>
class Registry
{
template<class configclass>
std::map<std::wstring, configclass> enumerateSubKeys(std::wstring subKeyName);
}
错误C2628:“注册表”后跟“ int”是非法的(您是否忘记了“;”?)
这表明您在类声明的末尾缺少分号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.