C++ 为了能够检查向量中包含的类的数据成员,我需要在autoexp.dat中输入什么?
首先,道歉:我已经读过一些关于在VS中检查模板的帖子(例如);不幸的是,它们要么没有包含我需要的信息,要么(更有可能)我无法成功地从答案中提取信息。我希望我没有问过很多次的太明显的问题 我有一个包含SomeClass类对象的向量: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.. 当我尝试上述问题答案中提供的一
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”窗口,应该有vectorvec
正确显示。这很奇怪-我看到了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;