概要いきなりですが、 C++では、嫌でもprivateな変数や関数も.hファイルに宣言する必要がある。 と思ってませんか? この記事を読めばその常識は覆ります! 今日C++のためのAPIデザイン を読んでいて、激震が走りました。 冒頭にも書いた様に、 C++では嫌でもprivateな変数や関数も.hファイルに宣言する必要がある。 そう思っていた時期が僕にもありました。 でも、違うんです。 どうやらPimplと言うイディオムを使うとcppファイルに隠蔽出来るそうです。 Pimpl導入前のコード簡単な例で示してみましょう。 ここにHogeと言うクラスがあり、インスタンス化されたらhogeと出力されるクラスがあります。 // Hoge.h class Hoge { public: Hoge(); ~Hoge(); private: void printHoge(); }; // Hoge.cpp