Re: [ROOT] call TControlBar from a function

From: Rene Brun (Rene.Brun@cern.ch)
Date: Thu Feb 20 2003 - 15:41:39 MET


Hi,

This is the expected behaviour in C++. When leaving the scope of a function,
objects created in the stack are automatically deleted. This is the case
for your TControlBar object.
Instead of:
   TControlBar bar("vertical");
do
   TControlBar *bar = new TControlBar("vertical");

Unnamed macros execute in the global scope.

Rene Brun

Golovanov George wrote:
> 
> Hi ROOTers,
> 
> I want to call TControlBar from a function. When I try to call it from
> a macros (i.e. code between { }):
> 
> {
>    gROOT.Reset("a");
>    TControlBar bar("vertical");
>    bar.AddButton("Help",".x hsimple.C","About program");
>    bar.AddButton("Exit",".q","Close Program");
>    bar.Show();
>    gROOT.SaveContext();
> }
> 
> all work successfully. But when I try to call same code from
> the function:
> 
> void SimTest(){
>    gROOT.Reset("a");
>    TControlBar bar("vertical");
>    bar.AddButton("Help",".x hsimple.C","About program");
>    bar.AddButton("Exit",".q","Close Program");
>    bar.Show();
>    gROOT.SaveContext();
> }
> 
> nothing appear on the screen.
> Thanks for any help,
>                      George.



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:09 MET