50 lines
1.2 KiB
Plaintext
50 lines
1.2 KiB
Plaintext
REM Sacado del forum de FreeBASIC (https://www.freebasic.net/forum/viewtopic.php?t=20432)
|
|
|
|
Type singleton
|
|
Public :
|
|
Declare Static Function crearInstancia() As singleton Ptr
|
|
Declare Destructor ()
|
|
Dim i As Integer
|
|
Private :
|
|
Declare Constructor()
|
|
Declare Constructor(Byref rhs As singleton)
|
|
Declare Static Function instancia(Byval crear As Integer) As singleton Ptr
|
|
End Type
|
|
|
|
Static Function singleton.crearInstancia() As singleton Ptr
|
|
Return singleton.instancia(1)
|
|
End Function
|
|
|
|
Static Function singleton.instancia(Byval crear As Integer) As singleton Ptr
|
|
Static ref As singleton Ptr = 0
|
|
Function = 0
|
|
If crear = 0 Then
|
|
ref = 0
|
|
Elseif ref = 0 Then
|
|
ref = New singleton
|
|
Function = ref
|
|
End If
|
|
End Function
|
|
|
|
Constructor singleton ()
|
|
End Constructor
|
|
|
|
Destructor singleton()
|
|
singleton.instancia(0)
|
|
End Destructor
|
|
|
|
'-----------------------------------------------------------------------------
|
|
Dim As singleton Ptr ps1 = singleton.crearinstancia()
|
|
ps1->i = 1234
|
|
Print ps1, ps1->i
|
|
|
|
Dim As singleton Ptr ps2 = singleton.crearinstancia()
|
|
Print ps2
|
|
|
|
Delete ps1
|
|
|
|
Dim As singleton Ptr ps3 = singleton.crearinstancia()
|
|
Print ps3, ps3->i
|
|
Delete ps3
|
|
Sleep
|