Top > C++ > apcl > interface > Singleton

Singleton Edit

概要 Edit

唯一のインスタンスを提供するクラス。
public継承をして使う。
使い方を正しくしないと、Singletonにならない罠があるので注意。

履歴 Edit

  • revision ? : 作成

コード Edit

ヘッダファイル Edit

fileSingleton.hpp
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 
 
 
 
 
 
 
-
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
!
|
|
|
|
|
-
!
|
-
!
|
|
!
|
|
!
 
 
 
/**
 * @file
 * fUCp^[SingletonC^[tF[XLqB
 */
#pragma once
 
//-----------------------------------------------------------
namespace apcl { namespace interface
{
  /**
   * fUCp^[SingletonC^[tF[XB
   * <pre>
   * msingletonł͂Ȃ̂ł炸B
   * publicpĎgB
   * pNX̓ftHgRXgN^•KvB
   * CX^XɃANZXꍇANX::instance()ŃANZXB
   * SingletonpNXp̂͐ȂB
   *
   * FmłȂSingleton
   * @code
   * class A : public ::apcl::interface::Singleton<A>
   * {
   * public:
   *   void print();
   * };
   *
   * void func()
   * {
   *  A::instance().print();
   * }
   * @endcode
   *
   * FmSingleton
   * @code
   * class A : public ::apcl::interface::Singleton<A>
   * {
   *   friend ::apcl::interface::Singleton<A>;
   * public:
   *   void print();
   * private:
   *   A();
   * };
   *
   * void func()
   * {
   *  A::instance().print();
   * }
   * @endcode
   *
   * </pre>
   */
  template< typename T >
  class Singleton
  {
  public:
    /// CX^X擾B
    static T& instance()
    {
      static T instance_;
      return instance_;
    }
 
  protected:
    /// Ej
    //@{
    Singleton()
    {
    }
    virtual ~Singleton()
    {
    }
    //@}
 
  };
 
 
}} // end of namespace ::apcl::interface
 
//-----------------------------------------------------------
// EOF

ソースファイル Edit

fileSingleton.cpp
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
 
 
 
 
 
 
 
 
/**
 * @file
 * Singleton.hpp̎LqB
 */
#include <apcl/interface/Singleton.hpp>
 
//-----------------------------------------------------------
// EOF

Attach file: fileSingleton.cpp 515 download [Information] fileSingleton.hpp 520 download [Information]

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes
Last-modified: (5878d)