« 似たもの探し | トップページ | 徹底 »

2014年4月21日 (月)思いこみの怖さ

おはようございます。本日の当番、プログラマーのM.Oです。

今日は、最近プログラミング中に嵌って無駄に時間を費やした失敗を書きなぐるsign01

それはライブラリのある機能を組み込もうとしている時の事であった。
あるクラスの関数を実行したいのに、オブジェクトのインスタンスを取得出来ず、
コンパイルエラーが取れずにもがいていた。


まず最初に書いたコードは以下の通り。
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コマであった。
なんて言いつつ、ケアレスミスの気もする。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2014/04/post-3dc7.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

« 似たもの探し | トップページ | 徹底 »

プログラマー」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/217647/59490155

この記事へのトラックバック一覧です: 思いこみの怖さ:

« 似たもの探し | トップページ | 徹底 »