Песнь про синглтоны
От: Alexey Chen Чили  
Дата: 13.10.04 18:17
Оценка: 77 (12)
Нда. Не буду больше пользоваться словом 'шутка' и другими неоднозначными словами. Дабы не вызывать непонимания.

В общем, изветная ситуация Singleton::Instance().DoIt(). Вот этот самый Instance меня писать слегка задолбало. Ведь с точки зрения программы, что такое синглтон. Ну, грубо говоря, статический общедоступный обьект, создаваемый по требованию. И подумалось мне, что бы к нему можно было бы обращатся как Singleton->DoIt(). И писать меньше и логично. Ничего сверхестественного, просто интересный взгляд на известную вещь.

#include <stdio.h>

struct Singleton_ {
  struct Gate; friend struct Gate;
  struct Gate {
    Singleton_* operator->() { // типа GetInstance
      static Singleton_ instance;
      return &instance;
    }
  };
  void DoIt() { printf("doit\n"); }
  ~Singleton_() { printf("~Singleton()\n"); }
private:
  //static void operator delete(void*);
  Singleton_() { printf("Singleton()\n");}
};
static Singleton_::Gate Singleton; // этот обьект как бы и не существует вовсе :)

void main(void) {
  Singleton->DoIt();
}


Может где и было, но не встречал.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.