> I have an error while trying to delete a TControllbar. The TControlbar is declared in a macro called test.cc which is execute in
> my rootlogon.cc.
>
> Here is my rootlogon.cc
>
> void rootlogon()
> {
> #include <iostream.h>
>
> // Create the canvas
> TCanvas * MyCanevas = new TCanvas("MyCanevas", "WA98 Pb+Pb 95 analysis");
> // Produce the main control bar
> gROOT->Macro("test.cc");
> }
>
> and here comes the macro test.cc :
>
> TControlBar * main_bar = new TControlBar("horizontal","main","main analysis menu");
>
> main_bar->SetNumberOfColumns(1);
>
> main_bar->AddButton("Close","{MyCanevas->Close(); delete main_bar;}","Close this toolbar");
>
> main_bar->Show();
> }
>
> by selecting the button Close, I get the following error :
>
> root [0] Error: No symbol main_bar in current scope FILE:/tmp/12940aaa LINE:1
> Error: main_bar==NULL cannot delete FILE:/tmp/12940aaa LINE:1
> *** Interpreter error recovered ***
>
> Curiously the problem can be solved by changing the declaration in test.cc by :
>
> main_bar = new TControlBar("horizontal","main","main analysis menu");
Your macro test.cc is executed within the scope of rootlogon.
When rootlogon exits, all variables created in its scope
are deleted.
Simply execute rootlogon in the global scope==>delete the statement
void rootlogon() in rootlogon.cc
Rene Brun