私が書いた c++ コードには、メイン ファイル ( .C ) と別のファイル ( .h) の 2 つのファイルがあります。ヘッダー ファイル (*.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