gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 00:47:44 24 4
gpt4 key购买 nike

考虑

template<class Y> struct foo
{
template <class ForwardIt>
foo(ForwardIt first, ForwardIt last);
};

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

template<class Y, class ForwardIt> foo(ForwardIt first, ForwardIt last)
{
// ToDo - code here
}

但这会产生一个编译错误,大意是它无法将该定义与声明相匹配。

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

最佳答案

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

其次,您必须为您的类模板参数和成员函数模板参数使用不同的模板 声明。

你需要:

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

关于c++ - 无法匹配模板类中模板函数的函数声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34045422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com