[solved]Template Definition Fehlermeldungen



  • Edit 2: Hab den Fehler selbst gefunden, myPQueue wurde in den verschiedenen Dateien des Programms insgesamt doppelt mit #include aufgerufen... daher die Fehler...

    Hallo!

    Versuche hier ein Template für eine Priority-Queue(die ich später für Dijkstra brauche) zu schreiben. 2 Methoden sind noch nicht fertig geschrieben, aber das sollte eigentlich erstmal auch ohne kompilieren, tut es aber leider nicht.
    Es werden auch Sachen von der Boost Graph Library gebraucht, aber der Fehler dürfte damit eigentlich nichts zu tun haben. Hier erstmal der Quellcode:

    template<class Graph, class Vertex> class myPQueue{
    	std::vector<Vertex> vec;
    	int size;
    
    public:
    
    	//Konstruktor
    	myPQueue(Graph& g, Vertex& s){
    		using namespace boost;
    		size=num_vertices(g);
    		vec.reserve(size); //Speicher für alle Elemente reservieren
    		typedef typename graph_traits<G>::vertex_iterator vertex_iter_t;	
    		vertex_iter_t v,vend;
    		tie(v,vend) = vertices(g);
    		int i=0;
    		for (tie(v,vend) = vertices(g); v != vend; ++v) {
    			put(vertex_distance, g, *v, std::numeric_limits<int>::infinity() );//initialisiere Distanzen mit unendlich
    			put(vertex_ind, g, *v, i);//speicher Position auf Knoten
    			vec.push_back(*v);
    			i++;
    		}
    		decrease_key(s,0);//Distanz von s auf 0 setzen und s damit an erste Stelle setzen
    	}//Konstruktor Ende
    	bool isEmpty();
    	void decrease_key(Graph& , Vertex&, int );
    	Vertex& deleteMin(Graph& );
    };
    
    template<class Graph, class Vertex>bool myPQueue<Graph, Vertex>::isEmpty(){
    
    	if(size==0)
    		return true;
    	else return false;
    }
    
    template<class Graph, class Vertex> void myPQueue<Graph, Vertex>::decrease_key( Graph& g, Vertex& v, int x){
    
    }
    
    template<class Graph, class Vertex> Vertex& myPQueue<Graph, Vertex>::deleteMin(Graph& g){
    
    }
    

    und hier dann die Fehlermeldungen(hab erst gedacht es fehlt ne Klammer, aber das ist es nicht. Scheint aber 4 mal der gleiche Fehler oder ein Folgefehler zu sein):

    1>------ Build started: Project: prog, Configuration: Debug Win32 ------
    1>Compiling...
    1>prog.cpp
    1>c:\dokumente und einstellungen\momo\eigene dateien\visual studio 2005\projects\prog\prog\mypqueue.h(31) : error C2953:
     'myPQueue' : class template has already been defined
    1>        c:\dokumente und einstellungen\momo\eigene dateien\visual studio 2005\projects\prog\prog\mypqueue.h(31) : 
    see declaration of 'myPQueue'
    1>c:\dokumente und einstellungen\momo\eigene dateien\visual studio 2005\projects\prog\prog\mypqueue.h(39) : error C2244: 
    'myPQueue<Graph,Vertex>::isEmpty' : unable to match function definition to an existing declaration
    1>        c:\dokumente und einstellungen\momo\eigene dateien\visual studio 2005\projects\prog\prog\mypqueue.h(28) : 
    see declaration of 'myPQueue<Graph,Vertex>::isEmpty'
    1>        definition
    1>        'bool myPQueue::isEmpty(void)'
    1>        existing declarations
    1>        'bool myPQueue<Graph,Vertex>::isEmpty(void)'
    1>c:\dokumente und einstellungen\momo\eigene dateien\visual studio 2005\projects\prog\prog\mypqueue.h(44) : error C2244:
     'myPQueue<Graph,Vertex>::decrease_key' : unable to match function definition to an existing declaration
    1>        c:\dokumente und einstellungen\momo\eigene dateien\visual studio 2005\projects\prog\prog\mypqueue.h(29) : 
    see declaration of 'myPQueue<Graph,Vertex>::decrease_key'
    1>        definition
    1>        'void myPQueue::decrease_key(Graph &,Vertex &,int)'
    1>        existing declarations
    1>        'void myPQueue<Graph,Vertex>::decrease_key(Graph &,Vertex &,int)'
    1>c:\dokumente und einstellungen\momo\eigene dateien\visual studio 2005\projects\prog\prog\mypqueue.h(48) : error C2244:
     'myPQueue<Graph,Vertex>::deleteMin' : unable to match function definition to an existing declaration
    1>        c:\dokumente und einstellungen\momo\eigene dateien\visual studio 2005\projects\prog\prog\mypqueue.h(30) : 
    see declaration of 'myPQueue<Graph,Vertex>::deleteMin'
    1>        definition
    1>        'Vertex &myPQueue::deleteMin(Graph &)'
    1>        existing declarations
    1>        'Vertex &myPQueue<Graph,Vertex>::deleteMin(Graph &)'
    1>Build log was saved at "file://c:\Dokumente und Einstellungen\Momo\Eigene Dateien\Visual Studio 2005\Projects\
    prog\prog\Debug\BuildLog.htm"
    1>prog - 4 error(s), 0 warning(s)
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    

    Dank an alle, die es sich zumindest anschauen. 🙂

    Edit: jetzt sind die Fehlermeldungen besser zu lesen


Anmelden zum Antworten