c++でテンプレートを使ってstd::cout<<x:で画面に表示できない。理由
提示コードのコメント部なのですがエラーコード[エラー C2679 二項演算子 '<<': 型 'type' の右オペランドを扱う演算子が見つかりません (または変換できません)。]
とコンパイルエラーになるのですがなぜでしょうか?そろらくテンプレートのtypeに関係がると思われるのですが初学者のため修正方法がわかりません。教えてくれますでしょうか?
#include <iostream>
#pragma once
#ifndef ___Header
#define ___Header
template<typename type,typename typeb>
class base {
private:
protected:
public:
base(){ }
virtual void f(int x) {
//type a = x;
std::cout << "仮想関数"<< x <<"\n";
}
virtual type f2(type x)const = 0;//純粋仮想関数
};
class type {
};
class typeb {
};
/*in main(){//int main()関数でこうする場合
derive<int> d;
_getch();
return 0;
}
*/
template<typename typec>
class derive : public base<typename type, typename typeb> {
public:
derive(){ }
void f(int x) {
std::cout << "派生"<< x<<"\n";
}
type f2(type x)const {//この関数の中
//int a = x;
std::cout << x;
return x;
}
};
#endif