我已经得到了下面的(简化的问题):C++ 11 - 移动对象包含FILESTREAM
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
。
这是编译器问题还是我缺少一些基本的东西?