'Type' Question

BlitzMax Forums/BlitzMax Beginners Area/'Type' Question

Hi, if you have 2 fields in a type - say A and B, and the third field C is the result of adding A and B:

Type Test
Field A
Field B
Field C=A+B
End type

global example:test
example = new test

example.a=10
example.b=20

...why wont example.c be calculated from the values of example.a and example.b? If doesnt seem to be able to access them and instead of 30, example.c will equal 0.

Thanks for any help.

because you delcared type c as a variable. It gets calculated when the object variable is first created

example = new test

If you want to add them you have to create a method

Type Test
Field A
Field B
Field C

Method Add()
C = A + B
EndMethod
EndType

global t:Test = new Test
t.A = 10
t.B = 10
t.Add()
Print t.C

Because it doesn't store the actual rule "A+B", it simply calculates it once when a new instantiation of the type is created. If you want to do this make C a method:
Type Test
  Field A
  Field B
  Method C()
    Return A+B
  End Method
End Type

...and call example.c() to get the value.

ah....ok, starting to get my head around this now. Thanks very much for your time guys