Passing Variables between classes in modules

Johan Granberg lijat.meREM at OVEgmail.com
Thu Apr 26 09:27:23 PDT 2007


okibi wrote:

> okibi Wrote:
> 
>> Johan Granberg Wrote:
>> 
>> > okibi wrote:
>> > 
>> > > I was wondering how I would go about passing a variable between two
>> > > classes that are within different modules in a program. Here is an
>> > > example of what I mean:
>> > > 
>> > > Let this be modMain:
>> > > 
>> > > //begin modMain
>> > > 
>> > > module modMain;
>> > > 
>> > > //imports go here
>> > > 
>> > > import modPopUp;
>> > > 
>> > > class modMain : MainWindow //this is for gtkD
>> > > {
>> > >   //this() would build the MainWindow
>> > >   
>> > >   modPopOp popWindow = new modPopUp();
>> > > }
>> > > 
>> > > void main(char[][] args)
>> > > {
>> > >   GtkD.init(args);
>> > >   modMain mMain = new modMain();
>> > >   GtkD.main();
>> > > }
>> > > 
>> > > //end modMain
>> > > 
>> > > Now let this be modPopUp:
>> > > 
>> > > //begin modPopUp
>> > > 
>> > > module modPopUp:
>> > > 
>> > > //imports go here
>> > > 
>> > > class modPopUp : MainWindow
>> > > {
>> > >   //this() would build the MainWindow
>> > >   
>> > >   char[] myStr;
>> > >   //function runs to generate myStr
>> > > }
>> > > 
>> > > //end modPopUp
>> > > 
>> > > What I'm asking is how do I pass myStr from modPopUp back to modMain?
>> > > 
>> > > Thanks!
>> > 
>> > Would popWindow.myStr work or have I misunderstood your question?
>> 
>> It doesn't throw an error, however it grabs a null value instead of what
>> the function sets the variable to.
> 
> Now if I reference the variable right after creating the instance of
> modPopUp, it will go ahead and try to grab the value without waiting to
> the instance to run the function to set it. I bet that's why it's grabbing
> a null value. Is there another method to pass the variable, or is there a
> way to lock modMain until modPopUp returns?

I can't determin that from the code above, it would be useful to know what
calls the function that sets myStr. If it is called from the constructor my
earlier suggestion would work, but if it is called by some other thread
something more is required. If as I suspect from your comments myStr is set
from another thread you should be able to acquire a lock in the constructor
and then release it in the function that sets myStr. 

hope this helps you.


More information about the Digitalmars-d-learn mailing list