当前位置:  开发笔记 > 编程语言 > 正文

无法匹配模板类中模板函数的函数声明

如何解决《无法匹配模板类中模板函数的函数声明》经验,为你挑选了1个好方法。

考虑

template struct foo
{
    template 
    foo(ForwardIt first, ForwardIt last);
};

为了实现构造函数,我写了

template foo(ForwardIt first, ForwardIt last)
{
    // ToDo - code here
}

但是这会产生编译错误,导致它无法将该定义与声明匹配.

我究竟做错了什么?我正在使用C++ 11编译器.



1> Armen Tsirun..:

您的代码中存在两个问题.首先,你在类的主体之外的函数定义中缺少类的名称,这基本上意味着你声明一个与类或其成员函数无关的独立函数(在这种情况下它是非法的)因为你的函数没有返回类型因此不能是一个独立的函数).

其次,必须template对类模板参数和成员函数模板参数使用不同的声明.

你需要:

template
template
foo::foo(ForwardIt first, ForwardIt last)
{
    // ToDo - code here
}

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有