如何在头文件中声明argv [1]

时间:2014-08-08 18:05:00

标签: c++ root-framework

我写的c ++代码有两个文件,一个是主文件( .C),另一个文件是( .h)。我需要在头文件(* .h)中使用argv [1]。我怎么能这样做?

实际上这个文件是通过root运行的。

我的AnalyzeTree.C文件的一些内容是

int main(int argc, char **argv)
{
    AnalyzeTree t;
    t.Loop();
    return 0;
}
void AnalyzeTree::Loop()
{
   TFile *hfile = new TFile(argv[2],"RECREATE");
.
.
.
}

AnalyzeTree.h文件的一些内容是

AnalyzeTree::AnalyzeTree(TTree *tree) : fChain(0) 
{
   if (tree == 0) {
      TFile *f = (TFile*)gROOT->GetListOfFiles()->FindObject(argv[1]);
      if (!f || !f->IsOpen()) {
         f = new TFile(argv[1]);
      }
      TDirectory * dir = (TDirectory*)f->Get(TString(argv[1])+":/demo");
      dir->GetObject("tree",tree);
   }
   Init(tree);
}

目前我得到的错误是

In file included from AnalyzeTree.C:2:0:
AnalyzeTree.h:29:35: error: ‘::main’ must return ‘int’
AnalyzeTree.h: In constructor ‘AnalyzeTree::AnalyzeTree(TTree*)’:
AnalyzeTree.h:201:62: error: ‘argv’ was not declared in this scope
AnalyzeTree.C: In member function ‘virtual void AnalyzeTree::Loop()’:
AnalyzeTree.C:42:29: error: ‘argv’ was not declared in this scope

1 个答案:

答案 0 :(得分:0)

首先:阅读C ++(可能是初学者)一书。点击此处的[C ++]标签查找好书。

第二:你可以通过参数传递argv [1]。让AnalyzeTree构造函数采用额外的std :: string const&参数。