OVH Cloud OVH Cloud

Notation hongroise

22 réponses
Avatar
JBB
Y en a t'il parmi vous ( à part Microsoft) qui utilisent encore la
notation hongroise?

Rq: pour ceux qui connaissent pas ça consiste à faire des chose du genre:

class CMaClasse{

int m_iNombre;
long * m_plPointeur;

voif f()
{
char tcTexte[100];
}
};
au lieu de
class MaClasse{

int Nombre;
long * Pointeur;

voif f()
{
char Texte[100];
}
};

2 réponses

1 2 3
Avatar
Marc Boyer
Le 25-10-2005, Fabien LE LEZ a écrit :
On Tue, 25 Oct 2005 13:32:35 +0200, JBB :
Euh... J'ai dû rater quelque chose, car je ne vois pas bien l'utilité
de rajouter un truc dans le langage.

template <class T, class identifiant_unique>
class PseudoTypedef
{
public:
PseudoTypedef (T const& t= T());
// Ici, les fonctions dont tu as besoin -- ==, <, etc.
};

class BIDON_taille_en_metres {};
typedef PseudoTypedef <int, BIDON_taille_en_metres> taille_en_metres;

class BIDON_age {};
typedef PseudoTypedef <int, BIDON_age> age;

int main()
{
taille_en_metres longueur_du_bateau = 100;
age age_du_capitaine = 0;
age_du_capitaine = longueur_du_bateau; //error cast impossible
}


Bon, merci pour l'idée générale.
On doit arriver à faire sans trop de mal des entiers
quasiment compatibles avec int et pas compatibles entre eux.
En tout cas, je progresse.

Marc Boyer
--
À vélo, prendre une rue à contre-sens est moins dangereux
que prendre un boulevard dans le sens légal. À qui la faute ?

Avatar
Vincent Lascaux
Ce que j'arrive à faire pour le moment, c'est
du sous-typage.

class Integer{
// Un peu de code
};

#define SUBTYPE(NewType, Base) // Un peu de code

SUBTYPE(KiloOrange, Integer)
SUBTYPE(KiloPomme, Integer)


Il reste à avoir un trait comme ca :

template<class T>
struct WrapToClassIfNecessary
{
typedef T value;
};

template<>
struct WrapToClassIfNecessary<int>
{
class value
{
//Ton "un peu de code" de ta classe Integer
};
};

La même chose pour tous les types de base et les pointeurs. Ensuite

#define STRONG_TYPEDEF(NewType, Base) SUBTYPE(NewType,
WrapToClassIfNecessary<Base>::value)

Est ce que ce boulot a été fait dans une librairie existante ? Je vois qu'il
y a un fichier qui s'appelle strong_typedef.hpp dans boost, mais il est pas
documenté...

--
Vincent

1 2 3