フェルマータ

個人用のメモ。ソフトウェアの導入とかが多くなる予定。ライセンスの気になる方はこのブログに載せたコードは修正 BSD に準ずるものと考えてください。

C++

cmake で github のレポジトリを登録したがコンパイルできない

経緯 Windows で CLion 使った開発を趣味でしているが表題の件でハマった。どういう状況でハマったかを書く。 コンパイラは MinGW を使用している Git は Windows でも Linux コマンドが使えるようなパスを通している cmake を使って github 上のレポジトリ…

Qt の QUndoStack の挙動

ポエム Qt には Undo framework があり、 QUndoStack に QUndoCommand を積んでいけば、いい感じに undo, redo できるようになる。 このときメモリが解放されるのかなど若干動作に癖というか、細かい部分の挙動の記述が少ないので記事にしておく。 Vitallium…

Qt のシグナルを一旦無効にする。

ポエム Qt の SIGNAL/SLOT は強力なんだが、 Undo, Redo を実装しようとしてシグナル止めて無いとユーザ編集と Undo, Redo によるモデルの変更が分からなくて Undo スタックがぶっ壊れるなと思ったので一旦シグナルを止める方法を調べた。 やり方 bool oldSt…

Qt の ui ファイルを cmake (CLion)から使う

ポエム 何度やっても QT_UIC_EXECUTABLE is missing といいよる cmake に愛想を尽かさず頑張った。 Qt の *.ui ファイルを使う方法がわかったので記事を書く。Qt 記事少なすぎでしょみんなもっと記事書いて!英語記事ですらほとんどないじゃん。 症状 以下の…

Qt を cmake から使う(CLion から使う)。

概要 Qt の開発というととりあえず QtCreator を使えばいいだろ、と思うのだが、最近 JetBrains から CLion という神ツールが発売された。 CLion: A power tool for a power languagewww.jetbrains.com 業務が IntelliJ だもので操作感が同じというのもある…

C++ でエラー処理書いてたら死にそうになったので Scala の Try パクってみた。

ポエム 業務で Scala を書いてるせいか、趣味で C++ 書いていると C++ のエラー処理のヤバさにつらみが溜まるし発狂したい。こういうのほんとうに辛い。 /** * path のファイルに書かれた文字列を返します。 * エラーがあった場合は err に値が書き込まれま…

qHash 関数と名前空間

概要 名前空間内で定義したクラスの qHash 関数の定義で手ひどい罠を踏んだので書いておく。 罠 これはダメなんだってさ。 namespace hoge { class Hoge { public: int foo; } } bool operator == (const hoge::Hoge &left, const hoge::Hoge &right) { retu…

C++ の参照型で多態は効くのか。

C++

経緯 ブログも久々だが C++ も久々で、書いているとどうにもポインタを触りたくないために、できるだけ参照型で物事を済ませたかった。のだが、そういえば参照型って多態効くんだっけと思って調べたがググらビリティが低かったので自分で調べた。 結果 効く…

libsndfile + QIODevice で WAVE ファイルの読み書き

経緯 趣味で音声合成っぽいソフトウェアを作っている。いい加減音声ファイルの読み書き部を作らねばならなくなったのだが、C++ WAVE 読み込み 無料と Google 先生に聞いてもマッチョな結果しか返ってこない。これはこれで興味はあるが、音声合成のドメインに…

Qt の JSON 機能を少し使ってみた。

今趣味で書いているプログラムの保存形式をどうしようか悩んでいたのだが、 XML は前使ってみたとき煩雑だったしもう少し簡単な形式はないものかとネットを見ていたら、どうも Qt5.0 以降から JSON をサポートしているらしい。 QtCore 5.0: JSON Support in …

Google Mock で演算子オーバーロードしたクラスのモックを作る。

経緯 以前書いたGoogle Mock を導入してみた。に見るように 普通の仮想メンバ関数のモッキングは大変簡単なのだが、演算子のオーバーロードに対してはモッキングができないのかやり方を調べてみた。 問題 単純に仮想関数をモッキングするだけであれば、MOCK_…

Google Mock で参照を返す。

経緯 つい先程テストを書いていて、参照を返すタイプのメソッドをモッキングする際に失敗をしたのでメモしておく。 問題 こんな感じのクラスをモック化しようとする。 class MyClass { public: virtual ~MyClass(){ } virtual const Property &property() co…

Qt で複数のテストを同時に実行する。

経緯 Qt には QTest というテスト用ライブラリがついてくる。 QTestLib Manual http://qt-project.org/doc/qt-4.8/qtestlib-manual.html が、しかしデフォルトだと1プロジェクトに対して1テストだけしか実行できない。 Jenkins に Qt 用のプラグインあるの…

Google Mock を導入してみた。

経緯 ようやく余裕ができてきたのか家でときどきコードを書いている。 最近色んな書き方を覚えてきたので、せっかくだし書き方を試してみようと思って、C++ とQtを使ってこんなコードを書いた。 下手くそな英語は放っておいて欲しいが、このクラスはコンスト…