我正在使用像
这样的功能void TestAnalyzer::AddBranch(std::vector<double>* vec, std::string name){
tree->Branch(name.c_str(),vec);
}
但是代替vector<double>
有时我也有int向量,所以如何使用“auto”或其他东西,以便使用相同的参数读取int和double。
答案 0 :(得分:4)
您正在寻找的是一个模板。您将为每种矢量获得一个新的不同功能。
template< typename element_type >
void TestAnalyzer::AddBranch(std::vector<element_type>* vec, std::string name){
tree->Branch(name.c_str(),vec);
}
element_type
将从函数参数中推导出来,就像从初始值设定项中推导出auto
一样。这种用法更原始,适用于C ++ 98(或许多预标准编译器)。
答案 1 :(得分:2)
听起来你想要一个模板化的功能。
template<typename T> void TestAnalyzer::AddBranch(std::vector<T>* vec, std::string name){
tree->Branch(name.c_str(),vec);
}