Bonjour,

Je me suis toujours demande (dans un contexte monothread) pourquoi, pour écrire un singleton Widget, on ne fait généralement pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
static Widget& instance()
{
  static Widget w;
  return w;
}
ou bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
static Widget& instance()
{
  static Widget* w = new Widget();
  return *w;
}

plutôt qu'utiliser un membre static de la classe Widget :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
class Widget
{
public:
...
 
static Widget& instance()
{
  if (!w)
  {
    w = new Widget;
  }
  return *w;
}
...
 
private:
static Widget* w;
};
 
Widget* Widget::w = 0;
Ce qui est qd même plus long à écrire ...