Eigene Klasse in cliext::vector



  • Hallo Leute,

    Ich habe mir eine eigene recht einfache Klasse geschrieben, die ich 'Checkmemory' nenne.
    Die Klasse wird problemlos kompiliert und ich denke kaum, dass sich in ihrem Inneren ein Fehler befindet.
    Ich muss nun jedoch meine eigene Klasse in einen cliext::vector packen.
    Der Compiler spuckt mir jedoch etwa tausend Fehler aus sobald ich dies folgendermassen versuche:

    cliext::vector<Checkmemory> ^ checkbox_mark;
    

    Der Name meiner Klasse ist 'Checkmemory':

    #include "StdAfx.h"
    
    ref class Checkmemory
    {
    private:
    	bool s1;bool s2;bool s3;bool s4;
    	bool s5;bool s6;bool s7;bool s8;
    public:
    	Checkmemory(bool b1, bool b2, bool b3, bool b4,bool b5,bool b6) : s1(b1), s2(b2), s3(b3), s4(b4), s5(b5), s6(b6)
    	{
    
    	}
    	bool gets1(void){return s1;}
    	bool gets2(void){return s2;}
    	bool gets3(void){return s3;}
    	bool gets4(void){return s4;}
    	bool gets5(void){return s5;}
    	bool gets6(void){return s6;}
    };
    

    Die Fehler kommen alle vom Linker:

    Fehler 213 error LNK2020: Nicht aufgelöstes Token (06000586) cliext.vector<Checkmemory>::Clone. main_window.obj

    Ich habe aber immer gedacht ein Vektor waere gerade deswegen eine Templateklasse, weil sie faehig ist auch neue Dateitypen zu speichern.
    Mit meinem scheint das ja nicht gerade zu funktionieren.
    Zeiger auf meine Klasse nimmt der Vektor auch nicht -

    Hat jemand eine Idee?

    Danke

    David



  • Versuchs mal mit

    cliext::vector<Checkmemory ^> ^ checkbox_mark;
    


  • Zeiger auf meine Klasse nimmt der Vektor auch nicht -

    Leider kein Erfolg 😞 <-- Selber Fehler wie oben.



  • Wo verwendest Du das template ? In einem Header oder in einer cpp Datei ?

    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1617333.html



  • In einem Header - ich seh mir mal deinen Link an.

    Edit:
    Also der Thread hat mich etwas verwirrt, denn ich verstehe nicht ganz was
    damit gemeint ist, dass bei Templateklassen auch Funktionen im Header definiert werden.
    Funktionen von Klassen werden doch immer definiert? Und eigentlich auch immer im Header.
    Bedeutet das nur, dass die Funktionen von Templateklassen nicht in CPP-Dateien geschrieben werden duerfen?
    Was aber hat das genau mit meinem Fall zutun?



  • Also der Thread hat mich etwas verwirrt, denn ich verstehe nicht ganz was
    damit gemeint ist, dass bei Templateklassen auch Funktionen im Header definiert werden.

    Deklaration und Definition

    Was aber hat das genau mit meinem Fall zutun?

    Google: C++ template linker error

    Du wirst sicherlich eine Lösung finden oder von alleine auf die Idee kommen, dass Deine Informationen zu mager sind um zu helfen.



  • nunja... dann werd ich mich mal auf die Suche begeben.



  • Versuch mal eine ganz einfache eigene Klasse mit Standardkonstruktur in den Vector zu kriegen. Dann weißt Du schon mal wie es prinzipiell gehen muss. Anschließend versuch sie schrittweise deiner Klasse anzunähern.



  • Und ich werd vor allem ein neues Projekt machen und es dort ausprobieren.
    Wenn ich die Ursache finde werd ich sie hier hinschreiben.

    Danke jedenfalls 🙂


Log in to reply