gpt4 book ai didi

c++ - 我需要在 autoexp.dat 中输入什么才能检查 vector 中包含的类的数据成员?

转载 作者:行者123 更新时间:2023-11-28 08:10:46 25 4
gpt4 key购买 nike

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

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

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

你说你有“vector 数组”,但你只有 SomeClass 类型对象的 vector :

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

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

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

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

您将 vec 声明为包含 10 个 vector 的数组,然后将元素 a 压入 4.vector 的末尾(在索引 3 处)。通过 vec[3][0].a,您正在访问索引为 3 的 vector 的索引为 0 的元素的属性 a。

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

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

  1. 按 Ctrl + D、Q
  2. vec[7]写入Expression字段
  3. 选择添加 watch
  4. 看看 Visual Studio 在 Watch 1 窗口的索引 7 处向您显示的 vector 有多可爱

希望对你有帮助

关于c++ - 我需要在 autoexp.dat 中输入什么才能检查 vector 中包含的类的数据成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9147217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com