読書会で「C++は循環参照の記述が困難なところが・・・」という話題があったけど、その場はPimplイディオムという言葉のみを紹介しておいた。 ということで補足を。 まず、問題となるコードはこんな感じ。 // hoge.h #pragma once #include "piyo.h" class hoge { piyo p; }; // piyo.h #pragma once #include "hoge.h" class piyo { hoge h; }; このコードはどうがんばってもコンパイルできない。 なぜなら、hogeをコンパイルする為にはpiyoが必要で、piyoをコンパイルする為にはhogeが必要だから。 これを、Pimplイディオムを使用して回避するとこんな感じになる。 // hoge.h #pragma once class hoge { // hogeクラスのprivate