2014年4月21日 (月)思いこみの怖さ
おはようございます。本日の当番、プログラマーのM.Oです。
今日は、最近プログラミング中に嵌って無駄に時間を費やした失敗を書きなぐる
それはライブラリのある機能を組み込もうとしている時の事であった。
あるクラスの関数を実行したいのに、オブジェクトのインスタンスを取得出来ず、
コンパイルエラーが取れずにもがいていた。
まず最初に書いたコードは以下の通り。
Hoge^ hoge = ref new Hoge();
んで、「プライベートメンバにアクセスできませぬ!」ってコンパイラに怒られた。
何故かこの時の私はこう思ったね。
「なるほど、デフォルトコンストラクタじゃないやつがあるんだな!」
って。アホかと・・・。
次に、ドキュメントに初期化周りの記述が見当たらないため、
ヘッダーファイルを確認した。
そして、IID_IHogeって記述を見つけて思わず飛び付いた愚か者が一人。
で以下のコードを書いた。
Hoge* pHoge;
UI->QueryInterface(IID_IHoge, reinterpret_cast
(&pHoge));
「IID_IHogeってなんすか?」って冷やかに怒るコンパイラ。
アルウェェ?なんぞこれ?って唸っている所に同僚が一言。
「それってシングルトンじゃない?」
おぅぷす。
言われた通り、以下のコードを書いた。
Hoge::Func();
「やっとできたか。」と許してくれたコンパイラ。
さて、今回の失敗の要因を上げてみたいと思う。
1.同ライブラリの他のクラスの初期化が ref new や QueryInterfaceを
使う実装だったため、そのやり方でできると思い込んでいた。
2.ヘッダーの読み込みの浅さ。
3.機能の特性への不理解。
インスタンスが複数存在する事を許さない機能だった。
2、3の影響も勿論あるが、一番大きいのは
1の他と同じように出来ると思い込んでいた所に在り。
何事も決めてかからず、その都度見極める必要を感じた1コマであった。
なんて言いつつ、ケアレスミスの気もする。
| 固定リンク | コメント (0) | トラックバック (0)
「プログラマー」カテゴリの記事
- 技術交流の業(2019.03.07)
- 福袋争奪戦デビュー(2019.01.31)
- 温泉旅行(2019.01.24)
- ゲーセンの近況(2018.11.29)
- 健康的にプログラミングを続けるためのちょっとした習慣(2018.10.18)
この記事へのコメントは終了しました。
コメント