Multiple identifiers

BlitzMax Forums/BlitzMax Programming/Multiple identifiers

Marmoth(Posted 2009) [#1]
Hello,

There is one thing about BMax that still confuses me: how to make more than one identifier pointing on the same variable so that i can modify this single variable using any of them?

The rough idea:
-------
a=1

b=a

b=b+1

print a
------

and have the printed text be "2".

Don't hesitate to ask if i didn't make me clear.

Thanks in advance for your answers!


BladeRunner(Posted 2009) [#2]
For simple basic types as Int, float, double, you can't do this.
What is possible is to use var in function headers:
bar = 1
foo(bar)
print bar
function foo(bar:int var)
    bar:+1
end function


Objects always are treated as references, so

will behave like you want it to.


ImaginaryHuman(Posted 2009) [#3]
You can do it with pointers.

local a:Int=1
local b:Int Ptr=VarPtr(a)
b[0]:+1
print a


Marmoth(Posted 2009) [#4]
Thank you very much for your quick and useful answers!


:-)


NB: Pointers don't work with custom types. For object, only fields seems to work this way (if you nullify the second object variable, the first will still be there).