T
Endlich!
Ich bin draufgekommen, wo der Fehler lag. Nur da soll mir einer mal erklären, wie dieser Fehler zustande gekommen sein soll. Das glaubt einem kein Mensch!
Der Fehler lag offensichtlich nicht an meinen überladenen Schiebeoperatoren, sondern am stringstream!
Ursprünglich hatte ich in folgendem Funktionsobjekt mit SringStreams gearbeitet:
//hash.h:
//-------
#include <hash_map>
struct hash<TVertex2>
{
size_t operator()(const TVertex2& obj) const
{
//Hier hatte ich ursprünglich mit StringStreams gearbeitet!
}
};
Nach dem Ersetzen der StringStream-Operationen durch ganz normale Char-Funktionen, wie gcvt(...), verschwanden die Linkerwarnungen. Da frag ich mich natürlich, wie kommt der Compiler bei einem Aufruf wie, einstream<<zahl, auf die Idee, dass ich den Schiebeoperator neu definiere und noch dazu überall, wo 'hash<TVertex2>' bekannt ist.
Da komm ich ehrlich gesagt nicht drauf.
Was mir noch etwas merkwürdig erscheint, ist die Tatsache, dass ich offensichtlich den Quellcode zur HashCodeBerechnung in keine eigene Quellcodedatei schreiben darf. Sobald ich diesen in eine eigene Datei 'hash.cpp' ziehe, meldet mir der Compiler, dass der gefundene Operator '()' kein Element von hash<TVertex2> ist.
Ist mir ehrlich gesagt auch schleierhaft!
Grüße,
TS++