掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
引数付きコンストラクタのテンプレートクラスを継承するには? (ID:65636)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
はじめまして。けっずと申します。 初投稿です。これからよろしくお願い致します。 テンプレートの使い方が良くわかっておらず苦戦しております。 どなたかご存知の方いらっしゃいましたら、ご教授下さい。 宜しくお願いします。 開発環境:VC++.net 2003 質問内容 引数付きのコンストラクタをもつテンプレートクラスを継承する際に どのように記述するのが正しいのか教えて下さい。 現在の症状としては、引数付きコンストラクタが呼び出せていません。 (error C2614 のコンパイルエラーが出ています) ソースは以下のような状態です。(細かい所は割愛しています) --------------------------------------------------------------- class CFirstMode { public: CFirstMode( HWND ); }; template < class T, typename D > class CTestModeRoot : public T { public: CTestModeRoot( D ); virtual HRESULT ProcA( void )= 0; }; template < class T, typename D > CTestModeRoot< T, D >::CTestModeRoot( D ) : T( D ) { } class CTestModeA : public CTestModeRoot< CFirstMode, HWND > { public: CTestModeA( HWND = NULL ); virtual HRESULT ProcA( void ); }; CTestModeA::CTestModeA( HWND hParent ) : CTestModeRoot( hParent ) { } --------------------------------------------------------------- (意図としては動作環境に応じて継承するクラスを変えたいという趣旨のものです ※起動時に決定) CTestModeAのコンストラクタでCTestModeRootが無いとコンパイルで怒られてしまいます。 (error C2614 のコンパイルエラーが出ています) テンプレートを明示してやれてないのが問題だと思うのですが・・・ CTestModeA::CTestModeA( HWND hParent ) : CTestModeRoot< CFirstMode, HWND >::CTestModeRoot( hParent ) CTestModeA::CTestModeA( HWND hParent ) : CTestModeRoot< CFirstMode, HWND >( hParent ) CTestModeA::CTestModeA( HWND hParent ) : template < CFirstMode, HWND > CTestModeRoot( hParent ) template < CFirstMode, HWND > CTestModeA::CTestModeA( HWND hParent ) : CTestModeRoot( hParent ) 上記のように書いたりして試しましたがいずれもダメでした。 どのように記述すれば引数付きコンストラクタを呼び出す事が出来るのでしょうか? お手数をおかけしますが、ご教授お願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.