回答編集履歴
1
Arduino IDEでコンパイルできるサンプルコードを追記
answer
CHANGED
@@ -50,4 +50,66 @@
|
|
50
50
|
2
|
51
51
|
3
|
52
52
|
4
|
53
|
+
```
|
54
|
+
|
55
|
+
---
|
56
|
+
**追記しました:**
|
57
|
+
Arduino IDE(1.8.13)でコンパイルできるサンプルコードを以下に示しておきます。
|
58
|
+
```C++
|
59
|
+
// arduino
|
60
|
+
#include "arduino.h"
|
61
|
+
|
62
|
+
class TEST{
|
63
|
+
public:
|
64
|
+
struct Test_Data{
|
65
|
+
int32_t Val;
|
66
|
+
uint16_t Offset;
|
67
|
+
String Name;
|
68
|
+
};
|
69
|
+
|
70
|
+
//この変数に配列の様にアクセスしたい 例)TestAry[2].Valと記述するとLength.Valにアクセスできる等
|
71
|
+
Test_Data Height; //[0]
|
72
|
+
Test_Data Weight; //[1]
|
73
|
+
Test_Data Length; //[2]
|
74
|
+
Test_Data Position; //[3]
|
75
|
+
|
76
|
+
// ポインタ配列でアクセスするメンバー関数
|
77
|
+
void example1();
|
78
|
+
|
79
|
+
private:
|
80
|
+
};
|
81
|
+
|
82
|
+
void TEST::example1() {
|
83
|
+
TEST::Test_Data* dataArray[] = {&Height, &Weight, &Length, &Position};
|
84
|
+
const int NUM = sizeof(dataArray) / sizeof(dataArray[0]); // (NUM==4)
|
85
|
+
for (int i = 0; i < NUM; i++) {
|
86
|
+
// 何かする
|
87
|
+
dataArray[i]->Val;
|
88
|
+
dataArray[i]->Offset;
|
89
|
+
dataArray[i]->Name;
|
90
|
+
}
|
91
|
+
}
|
92
|
+
|
93
|
+
void setup() {
|
94
|
+
TEST obj;
|
95
|
+
|
96
|
+
obj.Height.Val = 1;
|
97
|
+
obj.Weight.Val = 2;
|
98
|
+
obj.Length.Val = 3;
|
99
|
+
obj.Position.Val = 4;
|
100
|
+
|
101
|
+
// Height, Weight, Length, Posion の各メンバー変数をポインタ配列にする。
|
102
|
+
TEST::Test_Data* dataArray[4] = { &obj.Height, &obj.Weight, &obj.Length, &obj.Position };
|
103
|
+
// ループでアクセス
|
104
|
+
for (int i = 0; i < 4; i++) {
|
105
|
+
dataArray[i]->Val; // 何かする
|
106
|
+
}
|
107
|
+
|
108
|
+
// メンバー関数でアクセス
|
109
|
+
obj.example1();
|
110
|
+
}
|
111
|
+
|
112
|
+
void loop() {
|
113
|
+
// put your main code here, to run repeatedly:
|
114
|
+
}
|
53
115
|
```
|