C++

Visual C++を使っていてスタックオーバーフローが起こった

問題 Visual C++プログラムを書き、デバッグしていたら、スタックオーバーフローが起こった。 原因 参考資料スタックオーバーフロー - Wikipedia どうや大量に変数を宣言したのが原因かもしれない。 関数を呼び出しすぎて問題が起こったのではなさそうだ。な…

boost::arrayの勉強

boost::arrayは配列をイテレータで操作できる事を知ったので、勉強してみた。題材はウェイポイントを管理するオブジェクトについて。 ソースコード https://gist.github.com/a321013519a4f98197c7 #include <iostream> #include <boost/array.hpp> class Point { public: Point(double _</boost/array.hpp></iostream>…

Boost C++でSleep sort

元ネタ 常識を覆すソートアルゴリズム!その名も"sleep sort"! http://dis.4chan.org/read/prog/1295544154 Sleep sortについて ソートしたい対象 t = [8, 2, 4, 5] があるとする。 tにおけるi番目のt[i]だけsleepさせた後にt[i]を出力するとソートしたこと…

「 MSVCP100.dllが見つから・・・」というエラーが出たときの対処方法

問題 Visual C++でプログラムをReleaseモードでビルドしたけど、 「MSVCP100.dll が見つからなかったため、このアプリケーションを開始できませんでした。」 というエラーが出たときの対処方法。 事の発端は ニコニコ生放送用のコメントビュアー For Google …

メンバ関数を関数ポインタに代入

きっかけ この記事を見て、以前自分も手こずってそのまま放置していたことを思い出したからコードを書いてみた。 問題 メンバ関数のポインタを関数ポインタに代入できない class myclass { public: int foo(); }; int main() { myclass c; void (*func)() = …

Boost::asioでニコ生のコメントを取得

行ったこと タイトル通り、Boost::asioでニコ生のコメントを取得してみた。 ソースコード https://gist.github.com/872110 コメント取得手順 ブラウザでニコニコ動画にログイン ブラウザでhttp://watch.live.nicovideo.jp/api/getplayerstatus?v=放送ID を開…

C++でGoogle Chromeのプラグインを書いてみた

はじめに Google Chromeでプラグインを書くには、NPAPIを使用する必要があるあるけど、サンプルプログラムが少ないから勉強するのに敷居が高い。そこで、Nixysaを使うと簡単にプラグインを作成できる。 今回作ったコード https://github.com/nus/NPAPISample…

Windowsでnixysaのサンプルプラグインをビルド

nixysaとは、Google ChromeやFirefoxで独自のプログインをつくるのに必要なNPAPIをラップしたライブラリ。 これを使用することで、複雑なNPAPIプラグインの製作を楽にしてくれる。 nixysaの準備 まず、C++の開発環境であるVisual C++とPython製のビルドツー…

C++のPimpl

C++のプログラムでビルドに10秒程度かかることがあったので、ビルド時間の短縮のため(http://d.hatena.ne.jp/melpon/20101022/1287705842)にC++のイディオムであるPimpl(Pointer Implemetation)について調べてみた。そこで、ヒットしたのがこの記事 http:/…

C++の覚書 デストラクタの注意点

今後の注意点として書いておく。 結論からいうとクラスを宣言したスコープでexit関数を呼び出すとそのクラスのデストラクタは呼び出されない。 以下がその例。 #include <iostream> class hoge { public: hoge() { std::cout << "called instance" << std::endl; }; ~h</iostream>…