関数やクラスのメソッド中に、ローカルにクラスを定義できるってのを知った
クラスの中にクラスを書けることはpimlなんかを通じて知っていたのだが、関数の中にもローカルにクラスを定義出来ることは知らなかったのでメモ。ファンクタとか使うのに便利そう。
#include<iostream> void hoge() { class Hoge { public: void Shout(){std::cout << "Hello, World" << std::endl;} }; Hoge().Shout(); } int main() { hoge(); return 0; }
同様にクラスのメソッドの中でもイケた。
#include<iostream> class Moge { public: void Shout(){ class Hoge { public: void Shout(){std::cout << "Hello, World" << std::endl;} }; Hoge().Shout(); } }; int main() { Moge().Shout(); return 0; }
両方とも実行するとちゃんと
Hello, World
と表示される。