日記

ただの日記

QObjectを継承するとエラーでビルドできない [undefined reference to vtable for ~]

これで一日が潰れたorz

vtableというのはQt特有のものではなく、
仮想関数テーブル(virtual method table)というものであるらしい。
調べると(wikipeida)ポリモーフィズムを実現するために内部で実装されていることだけわかった。

コンストラクタのオーバライドの際にエラーが発生しているので、元々のクラスが認識されていないのだろうか???

原因がよくわからないが、解決方法はわかった。
一度、qmakeをすることだ。

ビルド(B) -> qmakeの実行

この作業を一度行うと、その後はエラーが出てこなかった。

Qtについての理解が薄いから何が何だかわからないよ。
参考サイトを見ると、この現象についての詳細が書かれている。

参考