Vous essayez de créer un std::numeric_limits
qui hérite de std::numeric_limits
- mais au moment où vous arrivez à la partie public numeric_limits...
, vous avez déjà déclaré votre propre modèle (qui est encore incomplet) qui est déjà nommé numeric_limits
, donc il essaie d'hériter de lui-même au lieu de l'existant std::numeric_limits
.
std::numeric_limits
n'est pas conçue comme une classe de base, et ne fournit aucune fonction virtuelle, donc l'héritage n'est pas utile de toute façon. Pour numeric_limits
gérer votre classe particulière correctement, vous souhaitez définir une spécialisation de numeric_limits pour ce type:
#include <limits> // get base template definition + standard specializations
namespace std {
template<> // define your specialization
class numeric_limits<MyType> {
// ...
};
}
Notez que c'est l'un des seuls cas où vous êtes autorisé à ajouter quelque chose à l'espace de noms std
- - ajouter une nouvelle spécialisation d'un modèle existant sur un type défini par l'utilisateur.
Merci, cela m'a aidé. – klm123