teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

一部修正

2020/03/13 22:58

投稿

thkana
thkana

スコア7738

answer CHANGED
@@ -3,18 +3,19 @@
3
3
  前座?として本題ではないところから。
4
4
  `sizeof(pins)/sizeof(int)`これを知っているのなら、
5
5
  `const int pins[]={5,6,7,8};`として、要素数の設定をコンパイラに任せてしまえばよいかと思います。検出数の増減をピン番号記述の変更だけにして、指折り数える必要を無くせます。
6
- なお、`sizeof(配列名)/sizeof(配列名[0])'という記述もよく見かけます。これだと、配列の要素の型が表面化しないので、寿限無寿限無長い名前型の配列の場合にも間違えないように気をつける必要を無くせます。
6
+ なお、`sizeof(配列名)/sizeof(配列名[0])`という記述もよく見かけます。これだと、配列の要素の型が表面化しないので、寿限無寿限無長い名前型の配列の場合にも間違えないように気をつける必要を無くせます。
7
7
 
8
8
  で、ネットの海を彷徨うのも悪いとは言いませんが、C++の入門書を一冊備えて母港とするのもまた一つのやりようかと思います。そうすると、多分動的にインスタンスを生成する場合、なんていう例があって
9
9
 
10
10
  ```C++
11
+ //未確認。多分いけると思うけど
11
12
  const int pins[]={5,6,7,8}; //前述。要素数はコンパイラに任せる
12
13
  const int SIZEOF_CS2=sizeof(pins)/sizeof(pins[0]);//何箇所かで使うので定数にとった。マクロにするケースも多い
13
14
 
14
15
  CapacitiveSensor *cs_2[SIZEOF_CS2]; //C++では、ポインタでインスタンスを保持出来る
15
16
  for(int i =0;i<SIZEOF_CS2;i++)
16
17
  {
17
- cs_2[i]=CapacitiveSensor(trg, pins[i]); //インスタンスを生成し、ポインタに格納する
18
+ cs_2[i]=new CapacitiveSensor(trg, pins[i]); //インスタンスを生成し、ポインタに格納する
18
19
  }
19
20
  ```
20
21