私は次のものを持っています(単純化された問題):
class Stream()
{
std::ofstream mStr;
public:
Stream() : mStr("file", ofstream::out)
{}
Stream(const Stream & rhs) = delete;
Stream(Stream && rhs) : mStr(move(rhs.mStr))
{}
void operator()(string& data)
{
mStr << data;
}
~Stream() = default;
};
このオブジェクトはロギング目的 (データの測定) であり、短時間しか使用されないため、生きている限り開いています。主なアイデアは、次のように使用することです。
int main()
{
std::function<void (std::string&)> Logger = Stream();
for (std::string& data : DataList)
{
Logger(data);
}
}
問題があります (GCC 4.7.2)。
- クラスには
Stream
コピー コンストラクターが必要です。 - を動かせません
fstream
。
これはコンパイラの問題ですか、それともここで何か基本的なことが欠けていますか?