+-

在过去的几个星期里,我一直在使用GDBs的 "调用 "功能,它看起来非常有用。
void VectorPrint(const std::vector<int>& v)
{
std::cout << "start printing vector\n";
for (int i = 0; i < v.size(); ++i) {
std::cout << v[i];
if (i != v.size() - 1)
std::cout << "\n";
}
//std::cout << "\n printing end \n";
}
(gdb)调用VectorPrint(any1DVectorhere)这将执行上述函数,并在控制台中打印矢量内容。
我面临的问题是,如果函数是模板化的,我无法调用相同的函数,比如下面的函数。GDB不能识别模板化的函数。
template <typename Traits>
template <typename myVec>
void MyClass<Traits>::VectorPrint(const std::vector<myVec>& v)
{
std::cout << "start printing vector\n";
for (int i = 0; i < v.size(); ++i) {
std::cout << v[i];
if (i != v.size() - 1)
std::cout << "\n";
}
//std::cout << "\n printing end \n";
}
谁能建议如何获得 召唤 功能工作与GDB在此usecase ?任何帮助是非常感激。
非常感谢
1
投票
投票
首先,请注意,在你的代码中,你必须至少使用一次模板,用于 该具体实例 的模板,由编译器创建。其次,即使你这样做,名字也不会只是一个简单的 VectorPrint. 这将是类似于 VectorPrint<type>. 写完后试着按TAB键 call VectorPr 来查看gdb所看到的可用实例。
我已经写了一篇较长的解释 在你的另一个问题中.