如何在头文件中声明argv[1]
How to declare argv[1] in header file
我写的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构造函数&论点。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 错误:未在此范围内声明'reverse'
- 为什么我的for循环不能正确获取argv
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 为什么在定义函数之前先声明它
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- #ifdef和未声明的标识符
- 没有显式声明的int[]中的foreach
- 在基于范围的for循环中使用结构化绑定声明
- 在将变量声明为引用时,堆在释放后使用
- C++:无法访问声明的受保护成员
- 为什么我不能在一个类的不同行中声明和定义成员变量?
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 在函数内部的声明中初始化数组,并在外部使用它
- Visual Studio中的函数声明和函数定义问题
- 如何在头文件中声明argv[1]