【发布时间】:2020-09-28 17:54:49
【问题描述】:
我有一个名为 AClass 的非常简单的类,它有两个成员:一个 int 和一个 int 向量。在我的程序中,我试图使用指向该类对象的指针队列和该队列上的 while 循环,直到它为空。在那个 while 循环中,我有时会创建新对象并将它们添加到队列中以进行一些处理。我遇到的问题是在该循环中创建的对象似乎丢失了向量成员。虽然 int 成员是可访问的。我不太明白为什么......
这是一个说明我的问题的代码小示例。
#include <iostream>
#include <vector>
#include <queue>
#include <string>
class AClass
{
public:
int a_number;
std::vector<int> a_vector;
void print()
{
std::cout << "a number: " << a_number << std::endl;
std::cout << "a vector: ";
for (size_t i = 0; i < a_vector.size(); i++)
{
std::cout << a_vector[i] << " ";
}
std::cout << std::endl;
}
};
int main()
{
std::queue <AClass*> aclass_pointers_queue;
AClass first_aclass_object;
first_aclass_object.a_number = 2;
first_aclass_object.a_vector = { 1,2,3,4,5 };
aclass_pointers_queue.push(&first_aclass_object);
int some_break_condition = 1;
while (!aclass_pointers_queue.empty())
{
AClass* current_class_object = aclass_pointers_queue.front();
current_class_object->print();
aclass_pointers_queue.pop();
AClass another_aclass_object;
another_aclass_object.a_number = 3;
another_aclass_object.a_vector = { 5,4,3,2,1 };
aclass_pointers_queue.push(&another_aclass_object);
if (some_break_condition >= 2)
{
break;
}
some_break_condition++;
}
return 0;
}
这是输出:
a number: 2
a vector: 1 2 3 4 5
a number: 3
a vector:
在 while 循环中创建的对象的向量不会打印任何内容。它的大小为零。
【问题讨论】:
-
为什么是指针?并且对于局部变量也不少..
标签: c++ class pointers vector member