我正在编写STL流的包装来同步来自多个线程的写入调用。我有以下(简化的)代码:STL流的包装类:转发运算符<<调用
class Synchronize {
private:
std::stringstream ss;
public:
void write(std::string& str) {
// locking ...
ss << str;
// unlocking ...
};
// other stuff ..
};
Synchronize& operator<<(Synchronize& o, std::string& str) {
o.write(str);
return o;
}
Synchronize& operator<<(Synchronize* o, std::string& str) {
o->write(str);
return *o;
}
它现在有可能通过使用<<
操作者Synchronize
类的对象上调用的方法write()
,但只通过使用std::string
。 std::stringstream
也需要很多其他的东西,如int
s和float
s。
是否有可能将此功能添加到我的Synchronize
类中而没有自己的一大堆operator<<
函数?模板会有帮助吗?或者我应该扩展iostream
库中的某个类?
接受第二。参数为'T const&'。 – Nawaz
@Mogria,是的使它成为一个函数模板,参见我的编辑 –
此外,如果你想支持操纵器,你需要为'operator <<'添加一些额外的重载相应的函数指针。 –