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
|
#include <type_traits>
// valide pour tous les types d'entiers ou booléen (bool, char, short, int, long, ...)
// au pire, faire plusieurs surcharges
template<class T>
std::enable_if_t<std::is_integral_v<T>> write(std::ofstream& out, T const& x)
{
out.write(reinterpret_cast<char const*>(&x), sizeof(x));
}
void write(std::ofstream& out, char const* s)
{
if (s) {
int size = strlen(s);
write(out, size);
out.write(s, size);
}
else {
write(out, int(0));
}
}
void Couleur::Save(ofstream &fichier) const{
write(fichier, getNom());
write(fichier, r);
write(fichier, v);
write(fichier, b);
} |
Partager