错误:无法将函数定义与现有声明

时间:2016-03-20 21:28:18

标签: c++ visual-studio

我遇到了一个问题,我无法解决它。当我编译我的所有功能都有问题时,我把这里的功能作为一个例子。错误是C2244:无法将函数定义与现有声明匹配。 所以这是我的头文件。

template <typename T>
class Gestionnaire {
public:
    Gestionnaire();
    ~Gestionnaire();

    bool addElement(const T* element);
    bool removeElement(const T* element);

    template < typename P>
    bool removeContent(P& predicat);

    template < typename P>
    T* findElement(P& predicat) const;

    bool findElement(const T& element) const;

    private:
        std::list<T*> liste_;
};  

template<typename P>
template <typename T>
bool Gestionnaire<T>::removeContent(P& predicat) {
        std::remove_if(liste_begin(), liste_.end(), predicat);
}

1 个答案:

答案 0 :(得分:1)

您必须将template<typename P>template <typename T>切换为与声明中显示的顺序相同的顺序。模板参数的第一个列表用于类模板,第二个用于模板化成员函数:

template<typename T>
template<typename P>
bool Gestionnaire<T>::removeContent(P& predicat) {
        std::remove_if(liste_begin(), liste_.end(), predicat);
}