我目前正在尝试过滤流式传输到' clog' streambuffer。因此我想创建一个班级' MyClog'超载它' s<<运算符并过滤流传输到它的输入,然后将过滤后的输入转发到clog streambuffer。
过滤取决于MyClog类的内部状态。此外,我想使用模板重载运算符,所以我只需要实现一个方法。
例如
clog << "This is a Test No." << 1;
myclog << "This is a Test No." << 2
根据myclog的内部状态,消息将通过clog打印出来。
如果我没有使用模板,我的重载运算符会起作用,我做错了什么? template<typename T>
和template<class T>
之间有什么区别?
以下是我的代码的摘录。
template<typename T>
class MyClog {
private:
bool state=false;
public:
MyClog& operator<<(const T& arg){
if(state){
clog << arg;
}
return *this;
}
答案 0 :(得分:0)
template<typename T>
优于template<class T>
,但它们是等效的。
当你只需要模板化一个函数时,你正在模仿整个类 - 这应该有效:
class MyClog {
private:
bool state=false;
public:
template<typename T>
MyClog& operator<<(const T& arg){
if(state){
clog << arg;
}
return *this;
}