forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=109)
-   -   Копирование типа (http://forum.boolean.name/showthread.php?t=3901)

WaReZ_MEN 13.07.2007 08:43

Копирование типа
 
Есть у меня к примеру тип
Код:

  Type TWeapon
      Field ID:Int

      Field Name:String


  Method Shot()
        ......................
  End Method

  Function Create:TWeapon(xId:Int,xName:String)
      self.ID=xID
            self.Name=xName
   
End Function
  End Type
 
................................................
 
Local Blaster:TWeapon=TWeapon.Create(1,"Бластер")


Так вот мне нужно сделать точную копию Blaster причем со всеми функциями и методами. Причем когда я тока сделал копию все данные будут равын к примеру я сделал копию бластера и назвал ее Blaster2 тоесть у Blaster2.ID=1 и Blaster2.Name="Бластер"
И если я гдето в коде захочу поменять у Blaster2 к примеру ID на 2, то у Blaster ID должен остатся равным 1.
Подскажите как такое сделать.

jimon 13.07.2007 12:25

Re: Копирование типа
 
ну вот так к примеру :
Код:

Type TTest
        Field id1% = 0
       
        Method Copy:TTest()
                Local t:TTest = TTest.Create()
                t.id1 = id1
                Return t
        End Method
       
        Function Create:TTest()
                Local t:TTest = New TTest
                Return t
        End Function
End Type

Global t1:TTest = TTest.Create()
t1.id1 = 1

Global t2:TTest = t1.Copy()
DebugLog "t1 id : "+t1.id1+" t2 id : "+t2.id1

t2.id1 = 2
DebugLog "t1 id : "+t1.id1+" t2 id : "+t2.id1

End

ps. у тебя не правильная функция создания типа, потому что она не создает ничего

dimanche13 13.07.2007 13:43

Re: Копирование типа
 
да, действительно WaReZ_MEN : ты объявил функцию create с возращаемым знчением своего типа, но не вернул... странно это.

WaReZ_MEN 14.07.2007 06:02

Re: Копирование типа
 
Яж писал прам на форуме забыл просто добавить а так там есть что нужно :)

Local Out:TWeapon =New TWeapon

Out
.id=xID
Out.Name=xName
Return Out

Тем немение спасибо за помощь. Очень помог.


Часовой пояс GMT +4, время: 18:08.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot