回答編集履歴

1

Arduino IDEでコンパイルできるサンプルコードを追記

2021/05/05 08:51

投稿

dodox86
dodox86

スコア9256

test CHANGED
@@ -103,3 +103,127 @@
103
103
  4
104
104
 
105
105
  ```
106
+
107
+
108
+
109
+ ---
110
+
111
+ **追記しました:**
112
+
113
+ Arduino IDE(1.8.13)でコンパイルできるサンプルコードを以下に示しておきます。
114
+
115
+ ```C++
116
+
117
+ // arduino
118
+
119
+ #include "arduino.h"
120
+
121
+
122
+
123
+ class TEST{
124
+
125
+ public:
126
+
127
+ struct Test_Data{
128
+
129
+ int32_t Val;
130
+
131
+ uint16_t Offset;
132
+
133
+ String Name;
134
+
135
+ };
136
+
137
+
138
+
139
+ //この変数に配列の様にアクセスしたい 例)TestAry[2].Valと記述するとLength.Valにアクセスできる等
140
+
141
+ Test_Data Height; //[0]
142
+
143
+ Test_Data Weight; //[1]
144
+
145
+ Test_Data Length; //[2]
146
+
147
+ Test_Data Position; //[3]
148
+
149
+
150
+
151
+ // ポインタ配列でアクセスするメンバー関数
152
+
153
+ void example1();
154
+
155
+
156
+
157
+ private:
158
+
159
+ };
160
+
161
+
162
+
163
+ void TEST::example1() {
164
+
165
+ TEST::Test_Data* dataArray[] = {&Height, &Weight, &Length, &Position};
166
+
167
+ const int NUM = sizeof(dataArray) / sizeof(dataArray[0]); // (NUM==4)
168
+
169
+ for (int i = 0; i < NUM; i++) {
170
+
171
+ // 何かする
172
+
173
+ dataArray[i]->Val;
174
+
175
+ dataArray[i]->Offset;
176
+
177
+ dataArray[i]->Name;
178
+
179
+ }
180
+
181
+ }
182
+
183
+
184
+
185
+ void setup() {
186
+
187
+ TEST obj;
188
+
189
+
190
+
191
+ obj.Height.Val = 1;
192
+
193
+ obj.Weight.Val = 2;
194
+
195
+ obj.Length.Val = 3;
196
+
197
+ obj.Position.Val = 4;
198
+
199
+
200
+
201
+ // Height, Weight, Length, Posion の各メンバー変数をポインタ配列にする。
202
+
203
+ TEST::Test_Data* dataArray[4] = { &obj.Height, &obj.Weight, &obj.Length, &obj.Position };
204
+
205
+ // ループでアクセス
206
+
207
+ for (int i = 0; i < 4; i++) {
208
+
209
+ dataArray[i]->Val; // 何かする
210
+
211
+ }
212
+
213
+
214
+
215
+ // メンバー関数でアクセス
216
+
217
+ obj.example1();
218
+
219
+ }
220
+
221
+
222
+
223
+ void loop() {
224
+
225
+ // put your main code here, to run repeatedly:
226
+
227
+ }
228
+
229
+ ```