无法访问Private Member: std::copy
Cannot Access Private Member: std::copy
我试图使用std::copy将向量的内容复制到输出文件中。我使用下面的代码:
void save()
{
std::basic_ofstream<TChar> fo(mFilename.c_str());
std::copy(mContent.begin(), mContent.end(), fo);
}
问题是,我得到这个错误:
错误2错误C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios':无法访问在类'std::basic_ios<_Elem,_Traits>'中声明的私有成员' c:program files (x86)microsoft visual studio 8vcincludefstream 802
我在SO上搜索过这个,每个人在传递参数时似乎都不小心使用了复制构造函数。因为我没有传递参数,所以我不确定复制构造函数是如何被触发的(或者它是否被触发了)。
额外的信息:
char是一个模板字符,通常是char、int、wchar_t等类型....在这个调用上下文中,我使用了char.
mContent是TChar类型的向量。
您需要使用std::ostream_iterator:
void save()
{
std::basic_ofstream<TChar> fo(mFilename.c_str());
std::copy(
mContent.begin(), mContent.end(),
std::ostream_iterator<mContent::value_type>(fo, " "));
}
Copy接受输出迭代器而非输出流作为第三个实参。你给它传递了一个输出流。之所以会出现这个错误,是因为如果您尝试将输出流用作迭代器,就会出现大量错误。这刚好是第一个
相关文章:
- 为什么我使用 std::copy() 收到运行时错误(分段错误)?
- std::copy 导致运行时检查失败 #2
- 对于输出,std::copy是否比std::cout快
- std::copy,std::copy_backward和重叠范围
- 在结构数组上使用 c++ std::copy
- Std::copy 和 std::ostream_iterator 使用重载函数打印值
- 从 std::copy 和 std::copy_n 中提取输入迭代器
- 如何使用 std::copy 打印用户定义的类型
- Using `std::copy()` with `std::back_inserter()`
- 可以使用 std::copy 将 3D 数组复制到矢量
- 为什么在 std::copy 中使用 std::back_inserter 而不是 end()
- 如何将unique_ptr与 std::copy 一起使用
- 为什么 std::move 的行为类似于 std::copy
- 如何使用 std::copy 将一个 constexpr 数组复制到另一个 constexpr 数组
- 为什么在我的测试程序中,从字符缓冲区读取一个int时,"std::copy"5x(!)比"
- 使用back_inserter()或inserter()提高std::copy()的效率
- 用memcopy、memmove或std:copy替换For循环
- 在不使用 std::copy 函数的情况下编写这个复杂的复制结构体
- std::copy 将双精度数组复制到浮点数数组
- 编译器减少 std::copy to memcpy (memmove) 的条件是什么?