【发布时间】:2020-12-08 20:42:34
【问题描述】:
我的头文件中有这个声明:
template<class T>
class list {
protected:
struct Node{...}
public:
...
template<typename Predicate>
Node* find_if(const Predicate& pred);
...
};
在类声明之后我有 find_if 方法定义(在同一个文件中):
template<class T, typename Predicate>
typename list<T>::Node* list<T>::find_if(const Predicate& pred) {...}
但 MSVC 编译器“无法将函数定义与现有声明匹配” 为什么我的方法定义是错误的? 感谢帮助
【问题讨论】:
-
必须是
template<class T> template <typename Predicate> typename list<T>::Node* list<T>::find_if(const Predicate& pred) {...}即您必须在外部定义中重复嵌套模板。