Template mehrfach definiert
Verfasst: 17.11.2012, 18:10
Hi, ich habe mal wieder ein Problemchen mit Templates. Meine Klasse sieht folgendermaßen aus:
Sobald ich den Header an mehr als 2 Stellen inkludiere, bekomme ich die Fehlermeldung, dass die Operatoren bereits definiert sind. Gut, bei normalen Funktionen wäre das ja klar, aber bei Templates sollte doch genau das nicht passieren? Was könnte da schief laufen?
Code: Alles auswählen
#pragma once
#include <string>
#include <fstream>
class OArchive
{
public:
template<typename t> friend OArchive& operator<< (OArchive& Archive, t val);
OArchive(std::string Filename, bool Tags=true);
private:
std::ofstream m_File;
bool m_Tags;//whether to write redundancy tags or not
};
template<typename t> OArchive& operator<< (OArchive& Archive, t val)
{
}
template<> OArchive& operator<< <unsigned int>(OArchive& Archive, unsigned int value)
{
Archive.m_File << value << std::endl;
return Archive;
}
template<> OArchive& operator<< <int>(OArchive& Archive, int value)
{
Archive.m_File << value << std::endl;
return Archive;
}
template<> OArchive& operator<< <float>(OArchive& Archive, float value)
{
Archive.m_File << value << std::endl;
return Archive;
}
template<> OArchive& operator<< <bool>(OArchive& Archive, bool value)
{
Archive.m_File << value << std::endl;
return Archive;
}