水曜日:C++関数の多重定義
かれこれC++で飯を食べさせていただいて10年くらいになるけれど、久々に血の気が弾いたあと鼻血がでるくらい酷いバグ入れてしまった。
幸い正式リリースモジュールを送信する数時間前に気付いて事無きを得たのだけど、本当に危なかった。
#include <iostream> #include <string> using namespace std; void writeOption(const string& value) { cout << "text: " << value << endl; } void writeOption(bool value) { cout << "bool: " << (value ? "true" : "false") << endl; } int main() { string s = "std::string de gonsu."; bool b = true; writeOption(s); writeOption(b); writeOption("text de gonsu"); return 0; }
最後の呼び出しがバグで、"test de gonsu" が出力されると思われがちだが、実際の結果は
text: std::string de gonsu. bool: true bool: true
となる。
とりあえずconst char*版を追加することで最小限の変更で修正をした。
同様の問題には ostream に対して wchar_t* の文字列を流し込んでポインタ値が出力されるバグなどがある。今のところ、この手の問題を未然に防ぐエレガントな方法が見つかっていない。
火曜日
昼はお好み焼き。夕飯はカレーと名前の知らない野菜と豚肉の炒め物。Chromecastが届いた。
夕方、普段果物を食べないK氏が苺を食べたと奥さんから連絡。めでたい。普通に考えれば大したことないことかもしれないけれども、我が家にとっては一大事であった。
M氏は高度なことをして親を驚かせるのに対して、K氏は真央ちゃん効果でいつも驚かしてくれる。
月曜日
帰宅時、ガレージを空けると子供のおもちゃが転がっていた。いつもは私が自分で片付けていたが、今日は初めて出迎えにきて気付いたK氏がどかしてくれた。
本日はM氏が疲れ切って早寝、帰ったらK氏が一人っ子状態で、込み上げてくる喜びが押さえきれず、ずーっとニヤニヤしていた。面白いくらいに分かり易い。
「お父さん、一緒に寝よう」
といつも言ってくるけれど、それはM氏のために遠慮していて、本当はお母さんと寝たいのを知っていたので
「今日はお母さんと寝ていいんだよ」
と言ったら、少し嬉しそうにして、寝かしつけてもらっていた。
火曜日
そろそろ暖かくなってきたので、ボタンが陥没してスイッチが入らなくなっていた扇風機を修理した。SEARSで買ったロータリー式の安物だけど、機構がシンプルでかつ静かで風力も強く、リモコン操作にも対応している。
唯一つの難点は、組み付けにセキュリティボルトを使用しており、通常の工具では容易に分解できないところである。その難点を克服すべくセキュリティボルトを取り外すための工具を自作した。
電動ドリルに、マンドレル(mandrel)を装着してディスクカッター(cut-off disc)を取り付け、中心を外さないように慎重に削りだす。思ったよりうまくいった。
日曜日
前日K氏と一緒に9時就寝、午前3時に目が覚めてしまう。午後5時まで布団でぐずぐずして6時に起きて波乗り。今年は水温もそこそこ暖かく、波にも恵まれている。
昼は蕎麦屋、食料買出し。帰りにケーキを買って帰る。平穏で楽しい週末であった。
土曜日
午前中から家の掃除。
石の床もタイルの隙間も、全て紙のワイプを使うのがよい。使い捨てのワイプは少し敬遠していたが、結局、布の布巾の磨耗も考慮すると使い捨ての紙のワイプを使い倒すほうが経済的になるようである。
月曜日
Presidents dayで休み。6時起きで波乗り。2月だが水温14、5度であまり寒くない。
昼はモッツァレラチーズを使ったマカロニグラタンが美味しかった。夜は野菜炒めと味噌汁とご飯。
子供たちはママ友の会合。午後は久しぶりに一人で過ごせる時間だったが、結局家族が戻るまで昼寝してしまう。