我需要在autoexp.dat中输入什么才能检查向量中包含的类的数据成员



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

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

class SomeClass {
    int a, b;
    //constructor..
};
std::vector<SomeClass> vec;
//vec.push some elements..

现在我希望能够在VS2010调试器中观看vec[0].a,vec[1].a。当我天真地尝试这个时,我当然会得到:

vec[0].a    CXX0058: Error: overloaded operator not found

当我尝试上面链接的问题的答案中提供的解决方案时,我得到:

((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;
};

你说你有"向量数组",但你只有类型为SomeClass:的对象的向量

std::vector<SomeClass> vec;
SomeClass a(1,2);
vec.push_back(a);
std::cout << vec[0].a;

在这种情况下,您可以使用数组下标运算符([])直接访问它们。如果您确定在索引0处有对象,那么vec[0].a就可以了。

如果你需要一个矢量数组,它看起来像这样:

std::vector<SomeClass> vec[10];
SomeClass a(1,2);
vec[3].push_back(a);
std::cout << vec[3][0].a;

您将vec声明为一个由10个向量组成的数组,然后在4的末尾推送一个元素a。矢量(在索引3处)。通过vec[3][0].a,您正在访问索引3处向量的索引0处元素的属性a。

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

用于调试:
在第二个例子中,当我在vec[3].push_back(a);行切换断点时,我选择Debug配置,然后按F5,当它停在我的断点时:

  1. 按Ctrl+D,Q
  2. vec[7]写入表达式字段
  3. 选择添加监视
  4. 看看Visual Studio在Watch 1窗口中的索引7处为您显示的矢量有多可爱

希望这能帮助

相关内容

最新更新