Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <vector> #include "PQueueElement.hpp" #include <iostream> namespace PQ { template <typename T> class PriorityQueue { public: void PushElement(T Element, int Priority=0); // Add a new Element to the queue T* PopElement(); // Get the topmost Element (highest priority, FIFO), deletes it) void Clear(); // delete all Elements out of the Queue bool Empty(); // Check if the Queue is empty bool EmptyNotNull(); // Check if the Queue is empty exept for priority=0 elements ~PriorityQueue(); PriorityQueue(); private: typename std::vector<PQ::PQueueElement< T> > Elements; typename std::vector<PQ::PQueueElement< T> >::iterator it; }; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include "PQueue.hpp" namespace PQ { template <typename T> void PriorityQueue<T>::PushElement(T Element, int Priority) // Add a new Element to the queue { // ... } template <typename T> PriorityQueue<T>::PriorityQueue() { std::cout << "PQ wird erstellt!" << std::endl; it = Elements.begin(); } //... } |
Zitat
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall PQ:riorityQueue<int>::~PriorityQueue<int>(void)" (??1?$PriorityQueue@H@PQ@@QAE@XZ)" in Funktion "_main".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall PQ:riorityQueue<int>:ushElement(int,int)" (?PushElement@?$PriorityQueue@H@PQ@@QAEXHH@Z)" in Funktion "_main".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall PQ:riorityQueue<int>:riorityQueue<int>(void)" (??0?$PriorityQueue@H@PQ@@QAE@XZ)" in Funktion "_main".
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
#include "PQueue.hpp" #include <iostream> int main() { PQ::PriorityQueue<int> MyPQ; MyPQ.PushElement(5,2); return 0; } |
idontknow
unregistriert
Zitat von »"HighligerBimBam"«
Machst du das zur Übung? Wenn nicht nimm doch den Priority Queue aus der STL, erspart dir die Kopfschmerzen.
Zitat von »"CBenni::O"«
Von daher habe ich so oder so Kopfschmerzen, und so lerne ich dabei wenigstens noch etwas, z.b. wie man Memberfunktionen von Templateklassen außerhalb von der Header-Deklaration (oder eben auch nicht -.-) definieren kann
Zitat von »"CBenni::O"«
Ich habe mir die aus der STL mal angeschaut und überhaut nicht verstanden...
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#ifndef __PRIORITYQUEUE_H_INCLUDED__ #define __PRIORITYQUEUE_H_INCLUDED__ #include <vector> #include "PQueueElement.hpp" #include <iostream> namespace PQ { template <typename T> class PriorityQueue { public: void PushElement(T Element, int Priority=0); // Add a new Element to the queue T* PopElement(); // Get the topmost Element (highest priority, FIFO), deletes it) void Clear(); // delete all Elements out of the Queue bool Empty(); // Check if the Queue is empty bool EmptyNotNull(); // Check if the Queue is empty exept for priority=0 elements ~PriorityQueue(); PriorityQueue(); private: typename std::vector<PQ::PQueueElement< T> > Elements; typename std::vector<PQ::PQueueElement< T> >::iterator it; }; #include "PQueue.inl" } #endif // __PRIORITYQUEUE_H_INCLUDED__ |
Zitat von »"David_pb"«
Bitte? Das ist doch wohl relativ Idiotensicher: http://www.sgi.com/tech/stl/priority_queue.html
Werbeanzeige