我写的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
答案 0 :(得分:0)
首先:阅读C ++(可能是初学者)一书。点击此处的[C ++]标签查找好书。
第二:你可以通过参数传递argv [1]。让AnalyzeTree构造函数采用额外的std :: string const&参数。