Passing Variables between classes in modules

okibi okibi at ratedo.com
Thu Apr 26 10:08:58 PDT 2007


Johan Granberg Wrote:

> 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.

Well, I know the value is coming up null as it doesn't wait for the instance of modPopUp to finish, and is there not getting the data. How would I go about locking modMain until modPopUp is finished?


More information about the Digitalmars-d-learn mailing list