Streamというカスタムクラスがあります
class Stream
public:
Stream& operator<<(int i) { stream_ << i; return *this;}
template <typename CustomClass>
Stream& operator<<(const CustomClass& c) { stream_ << c.toString() /* assume this template always have toString(); return *this; }
private:
std::stringstream stream_;
};
これは私が実際に持っているものの非常に基本的な例です。そして、次のように std::ios_base フラグを設定しようとしています:
Stream() << 1 << std::hex << 2;
演算子の使用;
Stream& operator<<(std::ios_base& b) { stream_.setf(b.flags()); return *this; }
std::hex は std::ios_base を返すため、これを呼び出してストリームのフラグを設定する必要があるため、私が理解していることから。ただし、常にテンプレートを呼び出します。注: このテンプレートを削除すると、すべてが期待どおりに機能しますが、両方を持つ方法はありますか?
さらに説明が必要な場合は、お気軽にお問い合わせください