2015-09 << 2015-10 >> 2015-11

2015-10-01 (木)

* Arduinoでクラスのコンストラクタが呼ばれなくて嵌った.

嵌ったのは数日前のことですが,今日になって原因に思い当たったので.

組み込み系だとフットプリント小さくするために,コンストラクタ呼び出しコードを削ってしまう,なんて話がたまにありますが,今回は内部はgccだし,そもそもクラスによっては正しく呼ばれていて原因に思い当たらなかった.

ライブラリディレクトリにある同名のクラスのコンストラクタがコンパイル時に使われているというオチだった.

使っているクラス名を見て自動的にリンクしてくれるの良いけど,同名のクラスがあるとメソッドが混ざってしかもコンパイルに成功してしまうようだ(たぶん).

とりあえず,クラス名を変えたら解決.自分のクラスで定義したメソッドが呼ばれているので,まさかコンストラクタだけ別のクラスのものが使われてるとは思ってもいなかった...

クラス名は長めの名前にしてヘッダファイルでtypedefしておくのが良いのかな.

2015-09 << 2015-10 >> 2015-11