返回地图的模板化类成员函数的声明

时间:2015-12-08 00:51:25

标签: c++

在VC ++ 2015中,我有一个untemplated类,它应该有一个模板化成员函数,它返回一个map。

以下是一些代码:

class Registry
{
    template<class configclass>
    std::map<std::wstring, configclass> enumerateSubKeys(std::wstring subKeyName);
}

但编译器会抛出错误消息:
错误C2988:无法识别的模板声明/定义
错误C2143:语法错误:缺少&#34 ;;&#34;之前&#34;&lt;&#34;
错误C2238:&#34;;&#34;
之前的意外令牌 错误C2059:语法错误:&#34;&lt;&#34;

我认为我的问题是必须使用一个地图,其中wstring必须被修复/未模板化,但第二个参数是我的模板类。

当然,我遵循了编译器的建议,但这并没有让我更进一步。

1 个答案:

答案 0 :(得分:1)

您需要@{ ViewBag.Title = "TestPage"; } <h2>TestPage</h2> <input type="submit" name="name" value="Click me" id="btn"/> <div id="d1"></div> <script type="text/javascript"> $('#btn').click(function(){ alert('clicked'); }); </script> 并在类声明的末尾添加一个分号。

正如@Kevin和@juanchopanza在评论中指出的那样,你只是缺少一个分号,可能是一个包含。使用VS2013中的以下程序:

#include <map>

我收到了您列出的各种错误:

  

错误C2143:语法错误:缺少';'在'&lt;'之前   错误C2238:';'之前的意外标记   错误C2988:无法识别的模板声明/定义
  错误C2059:语法错误:'&lt;'

还有:

  

错误C2039:'map':不是'std'的成员

class Registry { template<class configclass> std::map<std::wstring, configclass> enumerateSubKeys(std::wstring subKeyName); } int main() { } 添加包含后,错误会减少:

std::map
  

错误C2628:'注册表'后跟'int'是非法的(你忘了';'?)

这表明你在课堂宣言结束时遗漏了一个分号。