現在、複数のスレッドからの書き込み呼び出しを同期するための 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;
}
クラスのオブジェクトで演算子をwrite()
使用してメソッドを呼び出すことができるようになりましたが、 . また、 s やsなど、他の多くのものも必要です。<<
Synchronize
std::string
std::stringstream
int
float
Synchronize
独自の関数を大量に使用せずに、この機能をクラスに追加することは可能operator<<
ですか? テンプレートは役に立ちますか?iostream
または、ライブラリからいくつかのクラスを拡張する必要がありますか?