テンプレートで関数のインターフェイスを規定
規定の抽象クラスBがあって、これを継承してクラスCがある。このとき、基底クラスBのメソッドfuncをクラスCで公開したいが、部分的な処理だけを派生クラスで定義し、funcの外枠はBで定義したい例。
#include <iostream> using namespace std; template <typename T, typename ...Args> class B { public: void func() { for(int i = 0; i < 5; ++i) { func_if(i); } } private: virtual void func_if(Args ...args) = 0; }; class C : public B<C, int> { private: virtual void func_if(int x) { cout << x << endl; } }; int main() { C c; c.func(); cin.get(); return 0; }