-2

私が書いた 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
4

1 に答える 1

0

最初に: C++ (おそらく初心者向け) の本を読みます。ここの[C++]タグをクリックして良書を探してください。

2 番目: パラメータを介して argv[1] を渡すことができます。AnalyzeTree コンストラクターに追加の std::string const& 引数を取らせます。

于 2014-08-09T07:11:21.063 に答える