回答編集履歴
1
Arduino IDEでコンパイルできるサンプルコードを追記
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
|
+
```
|