double var1, var2;
std::vector<double *> x;
var1 = 1;
var2 = 2;
x.push_back(&var1);
x.push_back(&var2);
Run Code Online (Sandbox Code Playgroud)
当我在gdb中调试此代码并尝试print x [0]或*x [0]时,我得到:找不到operator [].现在如果我在push_back之后包含这一行:
x[0] = &var1;
Run Code Online (Sandbox Code Playgroud)
我可以访问gdb中的任何特定元素.其他成员也会发生同样的事情,例如front(),at()等.我的理解是编译器/链接器只包含源代码中存在的成员函数,而那些是我可以在gdb中使用的成员函数.有没有办法包含std :: vector的每个成员函数,所以我可以在gdb中访问它们?
Emp*_*ian 29
我的理解是编译器/链接器只包含源代码中存在的成员函数,而那些是我可以在gdb中使用的成员函数.
您的理解不正确/不完整.
std::vector
是一个模板类.而不显式实例,编译器是必需的实例只方法称为(通常存在于源方法的子集).
有没有办法包含std :: vector的每个成员函数,所以我可以在gdb中访问它们?
对于给定的类型T
,您应该能够通过请求它来显式实例化整个向量T
,例如:
template class std::vector<double>;
Run Code Online (Sandbox Code Playgroud)