C++ 为了能够检查向量中包含的类的数据成员,我需要在autoexp.dat中输入什么?

C++ 为了能够检查向量中包含的类的数据成员,我需要在autoexp.dat中输入什么?,c++,visual-studio,debugging,templates,C++,Visual Studio,Debugging,Templates,首先,道歉:我已经读过一些关于在VS中检查模板的帖子(例如);不幸的是,它们要么没有包含我需要的信息,要么(更有可能)我无法成功地从答案中提取信息。我希望我没有问过很多次的太明显的问题 我有一个包含SomeClass类对象的向量: class SomeClass { int a, b; //constructor.. }; std::vector<SomeClass> vec; //vec.push some elements.. 当我尝试上述问题答案中提供的一

首先,道歉:我已经读过一些关于在VS中检查模板的帖子(例如);不幸的是,它们要么没有包含我需要的信息,要么(更有可能)我无法成功地从答案中提取信息。我希望我没有问过很多次的太明显的问题

我有一个包含SomeClass类对象的向量:

class SomeClass {
    int a, b;
    //constructor..
};

std::vector<SomeClass> vec;

//vec.push some elements..
当我尝试上述问题答案中提供的一种解决方案时,我得到:

((vec)._Myfirst)[0].a   CXX0025: Error: operator needs class/struct/union
所以我知道我需要修改autoexp.dat。我试着做了一段时间,但没有成功

如果有人能写下我需要添加到autoexp.dat的行,以便能够检查这些变量,我将不胜感激(我已经觉得我在这方面花费了太多的时间,因此如果我能得到一个明确的解决方案,而不是提示或链接,我将不胜感激)


感谢您的时间。

SomeClass
定义如下:

class SomeClass
{
public:
    SomeClass(int a, int b) : a(a), b(b) { }
    int a, b;
};
std::vector<SomeClass> vec[10];
SomeClass a(1,2);
vec[3].push_back(a);
std::cout << vec[3][0].a;
你说你有“一个向量数组”,但你只有
SomeClass
类型的对象向量:

std::vector<SomeClass> vec;
SomeClass a(1,2);
vec.push_back(a);
std::cout << vec[0].a;
vec
声明为10个向量的数组,然后在4的末尾推送元素
a
。向量(在索引3处)。通过
vec[3][0]。a
您正在访问索引3处向量的索引0处元素的属性a

这两个示例的输出都是:
1

和用于调试:
在第二个示例中,当我在第
vec[3]行切换断点时,将_向后推(a),然后我选择
Debug
configuration,然后按F5,当它在断点处停止时:

  • 按Ctrl+D,Q
  • vec[7]
    写入表达式字段
  • 选择添加手表
  • 查看可爱的Visual Studio如何在Watch 1窗口中显示索引7处的向量

  • 希望这有帮助

    谢谢您的回答。首先,我犯了一个愚蠢的错误,把它称为“向量数组”——我的意思当然只是一个向量。感谢您发现了这一点,我编辑了我的问题以反映变化。不过,代码与我问题的原始表述保持不变。我的问题是在调试时(在vs10中):将vec[7]或vec[7].a(如您的示例中)添加到监视列表时,我会得到错误“CXX0058:error:overloaded operator not found”。在没有对调试器设置进行任何更改的情况下,它是否可以正常工作?如果您只有一个简单的向量,并且您正在调试配置下运行程序,那么您应该只打开“Autos”窗口,应该有vector
    vec
    正确显示。这很奇怪-我看到了
    vec
    ,但它肯定没有正确显示,例如,如果vec.size()==3,那么调试器显示vec如下:
    [3]({a=?b=?},{a=?b=?},{a=?b=?},{a=?b=?})
    。我想知道这是否只发生在我身上。通过阅读其他文章,我发现这是VS debugger针对模板化类型的标准行为,除非您调整调试器以识别您的类型。也许我误解了。稍后我将尝试在另一台机器上运行相同的代码。不管怎样谢谢你的帮助!不客气。如果您接受我的回答或编辑您的问题并提供更多信息,以便我真正了解您正在处理的问题,我将不胜感激。您认为我应该补充哪些进一步的信息?我举的例子不是我问题的简化版本;即使对于这个简单的类,调试器也确实给出了我在问题(以及我在这里的最后一条评论)中编写的错误代码。也许我应该补充一点,我是在Win7 x64机器上使用VS2010编译的。
    std::vector<SomeClass> vec[10];
    SomeClass a(1,2);
    vec[3].push_back(a);
    std::cout << vec[3][0].a;