質問編集履歴

2

書き加えました

2020/11/16 09:39

投稿

gemfighter
gemfighter

スコア38

test CHANGED
File without changes
test CHANGED
@@ -98,7 +98,7 @@
98
98
 
99
99
 
100
100
 
101
-
101
+          //聞きたいところはここです
102
102
 
103
103
  if (straightine = dynamic_cast<StraightLine*>(it)) {
104
104
 

1

お待たせしました。 主に聞きたいところだけの処理を書きました。 他に聞きたいところがありましたら書き加えます。

2020/11/16 09:38

投稿

gemfighter
gemfighter

スコア38

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,128 @@
1
+ ```C++
2
+
3
+ コード
4
+
5
+
6
+
7
+ //基底クラス
8
+
9
+ class Bottom
10
+
11
+ {
12
+
13
+ public:
14
+
15
+ char esc;
16
+
17
+ char kind;
18
+
19
+ short x1;
20
+
21
+ short y1;
22
+
23
+ short x2;
24
+
25
+ short y2;
26
+
27
+ long foreColor;
28
+
29
+ long backColor;
30
+
31
+ };
32
+
33
+
34
+
35
+ //派生クラス
36
+
37
+ class StraightLine : public Bottom
38
+
39
+ {
40
+
41
+ public:
42
+
43
+
44
+
45
+ char lineKind;
46
+
47
+ char NOT_USE;
48
+
49
+ short startX;
50
+
51
+ short startY;
52
+
53
+ short endX;
54
+
55
+ short endY;
56
+
57
+
58
+
59
+ //コンストラクタ
60
+
61
+ StraightLine();
62
+
63
+
64
+
65
+ //デストラクタ
66
+
67
+ ~StraightLine();
68
+
69
+
70
+
71
+ };
72
+
73
+
74
+
75
+
76
+
77
+ int main()
78
+
79
+ {
80
+
81
+ StraightLine *straightine = new StraightLine[2];
82
+
83
+ std::vector<Bottom> bases;//全部入れるテーブル
84
+
85
+
86
+
87
+ //ここらへんでpush_backでvectorにデータを入れています。
88
+
89
+
90
+
91
+ //イテレータで回しています
92
+
93
+ for (vector<Bottom>::iterator it = begin(bases); it != end(bases); ++it)
94
+
95
+ {
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+ if (straightine = dynamic_cast<StraightLine*>(it)) {
104
+
105
+
106
+
107
+ //ここで派生クラスの関数で出力している
108
+
109
+
110
+
111
+ }
112
+
113
+
114
+
115
+ }
116
+
117
+ }
118
+
119
+
120
+
121
+
122
+
123
+
124
+
1
- 現在、会社の研修であるプログラムを作っていますが、レビューで仕組みを説明できなくて困っています。
125
+ ```現在、会社の研修であるプログラムを作っていますが、レビューで仕組みを説明できなくて困っています。
2
126
 
3
127
  それが、基底クラスのvectorに派生クラスのデータを入れ、後でiteratorのfor文で回しながらvectorの中に入ってるデータを出力するところなのですが、iteratorからvectorの中の派生クラスのデータを出力しようとしたら、iteratorから派生クラスの中のデータにアクセス出来ないのです。
4
128