これ↓があなたの望んだものかはわからない、down-castは'禁じ手'だから。
C++
1#include <iostream>
2#include <vector>
3
4class Base {
5public:
6 int value;
7 Base(int v) : value(v) {}
8};
9
10class Derived : public Base {
11public:
12 int dummy;
13 Derived(int v=123) : Base(v), dummy(-v) {}
14};
15
16int main() {
17 std::vector<Base> vec { Derived(1), Derived(2), Derived(3) };
18 for ( Base& item : vec ) {
19 // cast-backしても復元できない
20 std::cout << static_cast<Derived&>(item).value << ','
21 << static_cast<Derived&>(item).dummy << '\n';
22 }
23}