【发布时间】:2021-02-14 18:51:19
【问题描述】:
我使用std::vector 将我的值从我的课程A 和B 存储到MyValues。插入的元素/值取决于类的类型。如果是A,则插入{x, y},如果是B,则插入{x, y, z}。我循环它,所以我可以尝试添加它的多个值,来测试它。但是当我循环A.ases 5 次然后B.bses 7 次时,循环的 MyValues 出于某种原因有 31 个单个元素。可以添加元素和“保留表单”(如果是 A -> {x, y},如果是 B,-> {x, y, z}),所以我可以获得相同的值,就像我插入的值一样并使用它?
类:
std::vector<int> MyValues;
class A {
public:
short int x, y;
A() {
this->x = this->y = 0;
}
};
class B : public A{
public:
short int z;
B() {
this->z = 0;
}
};
主要:
int main() {
A ases[5];
B bses[7];
for (short int a = 0; a < 5; a++) {
ases[a].x = 5 + a;
ases[a].y = 4 + a;
MyValues.insert(MyValues.end(), { ases[a].x, ases[a].y });
}
for (short int b = 0; b < 7; b++) {
bses[b].x = 2 + b;
bses[b].y = 3 + b;
bses[b].z = 1 + b;
MyValues.insert(MyValues.end(), { bses[b].x, bses[b].y, bses[b].z });
}
for (int v : MyValues) std::cout << "x y z = " << v << std::endl;
return 0;
}
输出:
x y z = 5
x y z = 4
x y z = 6
x y z = 5
x y z = 7
x y z = 6
x y z = 8
x y z = 7
x y z = 9
x y z = 8
x y z = 2
x y z = 3
x y z = 1
x y z = 3
x y z = 4
x y z = 2
x y z = 4
x y z = 5
x y z = 3
x y z = 5
x y z = 6
x y z = 4
x y z = 6
x y z = 7
x y z = 5
x y z = 7
x y z = 8
x y z = 6
x y z = 8
x y z = 9
x y z = 7
【问题讨论】:
-
你使用的是什么 C++ 版本?
-
您几乎可以肯定必须创建一个可以保存数据的对象并创建这些数据的向量。
-
@TonyTannous 不确定,如何找到它,但 Visual Studio 只显示 C++ 2019。
-
@TonyTannous 你能做一个输出操作符来为 A 和 B 做正确的事情吗?
-
@TonyTannous 道歉,我是想@ OP。