Armadilloのaptitudeが死んでしまう問題は、エラーでコケるパッケージをdpkg --force-all -i hogehogeって無理やりインストールしたら直りました。しかもaptitude upgradeしたらそのパッケージが削除されました。あーん?こんなんで良いのかいな、オイ。
昨日、参照の話が出てきたのでそれに関連した話をば。C++ の参照って微妙にわかりづらいと思います。
例えばint func_a(int &arg) {arg++;}; なんて関数があると、呼び出すときはint i; func_a(i); と書きます。見た目は値渡しで呼んでそうなのに、実は値が変えられてしまう気持ち悪い現象が起きます。
どうもC++ はCの拡張版であるという色眼鏡がかかってしまって、Cの全て値渡し呼び出しというルールとぶつかって参照がややこしく感じます。実際に使おうと思っても関数定義を見るまでは、参照渡しで変更される可能性があるのか、単なる値渡しなのかが呼び出し側からぱっと見わからないから、面倒なんですね…。
では、どうしているかというと、参照で渡すときはconst参照しか使いません。もし関数側に変更する意思があるなら、ポインタを受け取る(ポインタ渡しは & が付くのでわかる)ようにします。C++ なのにポインタとはかなりCライクな書き方ですが、参照渡しなのにうっかりCの値渡しだと思って原因不明のバグに悩むよりはマシかなと思います。
< | 2006 | > | ||||
<< | < | 03 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | - |
合計:
本日: