2016-03-20 4 views
0

Ich habe ein Problem, und ich kann es nicht lösen.Wenn ich kompiliere ich habe ein Problem mit all meinen Funktionen, habe ich eine Funktion hier als ein Beispiel. Der Fehler ist C2244: Die Funktionsdefinition kann keiner vorhandenen Deklaration zugeordnet werden. Das ist also meine Header-Datei.Fehler: Kann Funktionsdefinition nicht mit einer vorhandenen Deklaration übereinstimmen

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); 
} 
+2

Schauen Sie in der Vorschau zu überprüfen, ob Ihre Post richtig es vor der Vorlage formatiert ist –

+0

@LogicStuff sorry ich die falsche hinzugefügt Funktion hier –

+0

@MM Entschuldigung ich bin noch neu hier ich weiß nicht wirklich, wie man das macht –

Antwort

1

Sie haben template<typename P> und template <typename T> auf die gleiche Reihenfolge wechseln, wie sie in der Erklärung angezeigt. Die erste Liste der Template-Parameter ist für die Klassenvorlage, die zweite als Templat für das Memberfunktion:

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

Danke das war hilfreich! Ich habe eine Frage tho, wenn ich T als meinen Parameter verwende und ich nur P in meiner Implementierung verwende, was sollte der Auftrag sein? weil es nicht kompiliert wird, wenn ich es in dieser Reihenfolge halte. Danke –

+0

@MarcElKhoury: Was meinst du, verwenden Sie es nur in Ihrer Implementierung? – MikeMB

+0

es bedeutet, ich verwende es nur innerhalb der Funktion nicht im Funktionskopf. Vorlage Vorlage Bool Gestionnaire :: trouverElement (const T & Element) const { , dass der Header meiner Funktion ist, aber ich nur P innerhalb der Funktion –

Verwandte Themen