テンプレートクラスに、テンプレート関数を実装すること自体は、目新しい物でもないが、今回は次回のための前振りも含めている。
#include <iostream>
template< typename T1 >
class Class
{
T1 value_;
public:
Class( const T1& value ) : value_( value ){}
template< typename T2 >
void print() const
{
std::cout << static_cast< T2 >( value_ ) << std::endl;
}
};
int main()
{
Class< float > c( 3.14 );
c.print< int >();
c.print< double >();
c.print< bool >();
}
簡単な例として、 float 型で値を保持し、print 関数を呼ぶときに static_cast をする。
% c++ template_function_of_template_class.cpp
% ./a.out
3
3.14
1
それぞれ、int 型、double 型、bool 型に変換されて出力された。
次回。
セコメントをする