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

How to declare argv[1] in header file

本文关键字:argv 声明 文件      更新时间:2023-10-16

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

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

我的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

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

第二:你可以通过参数传递argv[1]。让AnalyzeTree构造函数接受一个额外的std::string构造函数&论点。