我有以下(简化的问题):
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
我动不了
这是编译器问题还是我在这里遗漏了一些基本的东西?