掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
テンプレート引数にstd::endlを渡す (ID:66733)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
std::endlが単なる関数ではなく、関数テンプレートだからです。 std::endlのプロトタイプは template<class charT, class traits> basic_ostream<charT, traits>& endl(basic_ostream<charT, traits>&); となっています。(名前空間stdは省略) 単純に template<class T> Debug& Debug::operator<<(const T& a) にstd::endlを渡しただけでは、charTとtaritsを推論できないので コンパイルエラーになります。 template<class T> Debug& Debug::operator<<(std::ostream& (*pf)(std::ostream &)) { std::cout << pf; return *this; } というoperator<<を定義すればstd::endlやその他各種マニピュレータが とりあえず使えるようになります。(よい解かどうかは別として) もし、Debugの用途がデバッグ出力用のクラスだとしたら、Debugを std::ostreamから派生させて、さらに低レベル出力用クラスとして std::streambufの派生クラスを定義するとか。 て、大掛りすぎるか……
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.