> La (mauvaise) idée d'utiliser un compteur statique vous a été AIMABLEMENT suggérée par le (très mauvais) exemple qui sert souvent d'introduction à la notion de membre statique, à savoir
Ah! Mes slides ont toujours ce fichu compteur faute d'avoir trouvé un exemple pertinent et non abstrait. C'est une de mes grande frustration d'ailleurs.
Chers amis, vous utilisez quoi comme exemple pour présenter static (relatif aux membres) à vos apprenants?
Analogie avec les énumérations de java, si tu vois.
Version longue : en java les membres d'une enumération ne sont pas des entiers déguisés, mais des (références) à des objets créés au départ. Ils sont dans la classe (publics et statics), et crées au demarrage par le constructeur qui est privé.
Exemple quand j'aurai autre chose qu'un clavier de smartphone.
Que voili : les 4 directions.
#include <iostream>
//
// Definition
//
class Direction
{
int m_numero;
Direction(int numero); // yes, constructor is private.
public:
Direction next() const;
std::string name() const;
public:
static Direction NORTH, EAST, SOUTH, WEST;
static Direction every[4];
};
//
// Implementation
//
Direction::Direction(int numero)
: m_numero{numero}
{
}
Direction Direction::next() const
{
return {(m_numero + 1) % 4};
}
std::string Direction::name() const
{
static std::string names[] = {
"North",
"East",
"South",
"West",
};
return names[m_numero];
}
Direction
Direction::NORTH{0},
Direction::EAST{1},
Direction::SOUTH{2},
Direction::WEST{3};
Direction Direction::every[] = {
NORTH,
EAST,
SOUTH,
WEST,
};
//
// use
//
int main()
{
std::cout << "* Foreach loop" << std::endl;
for (auto d : Direction::every)
{
std::cout << d.name() << std::endl;
}
std::cout << "* Loop with next" << std::endl;
Direction dir = Direction::NORTH;
for (int i = 0; i < 10; i++)
{
std::cout << i << ". " << dir.name() << std::endl;
dir = dir.next();
}
}
Résultat :
* Foreach loop
North
East
South
West
* Loop with next
0. North
1. East
2. South
3. West
4. North
5. East
6. South
7. West
8. North
9. East
- Edité par michelbillaud 30 mai 2020 à 10:56:02
Enseignement de static (pour les membres)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.