[解決済み] クラステンプレート継承 C++
2022-03-07 01:32:08
質問
テンプレートクラスを継承して、演算子 "()" が呼ばれたときの動作を変更したい - 別の関数を呼び出したいのです。以下のコードです。
template<typename T>
class InsertItem
{
protected:
int counter;
T destination;
public:
virtual void operator()(std::string item) {
destination->Insert(item.c_str(), counter++);
}
public:
InsertItem(T argDestination) {
counter= 0;
destination = argDestination;
}
};
template<typename T>
class InsertItem2 : InsertItem
{
public:
virtual void operator()(std::string item) {
destination ->Insert2(item.c_str(), counter++, 0);
}
};
を実行すると、このようなエラーが発生します。
Error 1 error C2955: 'InsertItem' : use of class template requires template argument list...
正しいやり方、もしくは他に方法があればお聞きしたいのですが。ありがとうございます。
どのように解決するのですか?
継承する場合、親テンプレートをインスタンス化する方法を示さなければなりませんが、同じテンプレートクラスTが使用できる場合は、これを行います。
template<typename T>
class InsertItem
{
protected:
int counter;
T destination;
public:
virtual void operator()(std::string item) {
destination->Insert(item.c_str(), counter++);
}
public:
InsertItem(T argDestination) {
counter= 0;
destination = argDestination;
}
};
template<typename T>
class InsertItem2 : InsertItem<T>
{
public:
virtual void operator()(std::string item) {
destination ->Insert2(item.c_str(), counter++, 0);
}
};
他に必要なものがあれば、その行を変更するだけです。
class InsertItem2 : InsertItem<needed template type here>
関連
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] template "と "typename "キーワードはどこに、なぜ入れなければならないのですか?
-
[解決済み] 私的相続、公的相続、保護相続の違いについて
-
[解決済み] ベースクラスのコンストラクタを呼び出す際のルールは?
-
[解決済み] 派生クラス関数から親クラス関数を呼び出すには?
-
[解決済み] C++テンプレート関数定義の.CPPファイルへの格納
-
[解決済み】AngularJSのスコーププロトタイピング/プロトタイピング継承のニュアンスとは?
-
[解決済み】静的定数文字列(クラスメンバ)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】C++の余分な資格エラー
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み] to_string は std のメンバーではない、と g++ が言っている (mingw)
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み】変数やフィールドがvoid宣言されている