さて、前回は動的ポリモーフィズムで組みました。
今回はすごーーーーーーく冗長ですが、静的ポリモーフィズムです。
ソースコード
以上です。
前回との違い
template< class T_interface > class TCPIPInterfaceClass { public: void create_connection() { static_cast< T_interface& >(this)->create_connection(); } void wait_for_incomming() { static_cast< T_interface& >(this)->wait_for_incomming(); return; } void read_data( char* read_buffer, size_t buffer_length ) { static_cast< T_interface& >(this)->read_data(read_buffer, buffer_length); } void write_data( const char* write_data, size_t data_length ) { static_cast< T_interface& >(this)->write_data(write_data, data_length); } };
静的ポリモーフィズムを使用して、インターフェースを定義しています。
それだけです(-_-;)
2020/04/09追記ーーーーーーーーーーーーーーーー
すみません、これと前の記事今の私の実力で考えたものではなく、7年前の自分のEvernoteメモの焼き直しです。
私が盛んに勉強していた時代には参考書籍には乗ってなかったような気がしますが、
これCRTPと言うらしいです。
個人的にvirtual以上の性能追及したいなーって思った工夫だったのですが、やはり先人たちの実力って想像つかない神のレベルだと実感しました。
さいごに
いや、最後にっていうほど書いていないんですが、動的ポリモーフィズムを使用したインターフェースの定義よりコンパイラのメッセージも不親切だけど、こっちの方が早いよ、という例です。
この例がC++言語の学習の助けになればいいと思います。
0 件のコメント:
コメントを投稿