【发布时间】:2020-03-08 20:12:41
【问题描述】:
在下面的代码中,Struct2 中的 Struct1 指针应该始终指向 Struct1 的某个对象。这些结构中的每一个都包含在一个向量中。
但是,当我输出 Struct2 对象中指向的 Struct1 对象的索引变量时,在某些情况下会返回错误的变量。
为什么指向向量中包含的对象的指针有时会指向向量中的不同对象?
struct Struct1
{
size_t index;
std::vector<size_t> data;
}
struct Struct2
{
Struct1 *s1;
}
class MyClass
{
std::vector<Struct1> s1s;
std::vector<Struct2> s2s;
size_t propIndex = 0;
void input(QByteArray &line)
{
if (line == "1") {
for (size_t i = s1s.size(); i <= propIndex; i++) {
s1s.push_back({ .index = i, .data= {} });
}
QByteArrayList list = getList();
for (auto id : list) s1s.at(propIndex).data.push_back(id.toULongLong());
}
else {
if (propIndex == s2s.size()) {
s2s.push_back({ .s1 = nullptr });
}
if (line == "2") {
size_t index = getIndex();
for (size_t i = s1s.size(); i <= index; i++) {
s1s.push_back({ .index = i, .data= {} });
}
s2s.at(propIndex).s1 = &s1s.at(index);
}
}
propIndex++;
}
QByteArrayList output()
{
QByteArrayList output;
for (auto s2 : s2s) {
output += QByteArray::number(s2.s1->index) + "\n";
}
return output;
}
}
【问题讨论】:
-
您好!请阅读Why is "Can someone help me" not an actual question。为了使这个问题可以回答,请详细说明您的代码的预期和实际行为。
-
@Brian 我试图重新表述这个问题:)