我正在尝试使用这个问题的解决方案:
错误信息
c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2144): error C2679: binary '=' : no operator found which takes a right-hand operand of type 'const Line' (or there is no acceptable conversion)
(以及之后的一堆模板跟踪数据)
我正在使用 Visual C++ 2010 Express。
代码
#include<string>
#include<iostream>
#include<fstream>
#include<vector>
#include<iterator>
class Line
{
std::string data;
public:
friend std::istream& operator>>(std::istream& inputStream, Line& line)
{
std::getline(inputStream, line.data);
return inputStream;
}
operator std::string()
{
return data;
}
};
int main(int argc, char* argv[])
{
std::fstream file("filename.txt", std::fstream::in | std::fstream::out);
std::vector<std::string> lines;
// error is in one of these lines
std::copy(
std::istream_iterator<Line>(file),
std::istream_iterator<Line>(),
std::back_inserter(lines));
}
最佳答案
这是编译好的正确版本:
class Line
{
std::string data;
public:
friend std::istream& operator>>(std::istream& inputStream, Line& line)
{
std::getline(inputStream, line.data);
return inputStream;
}
operator std::string() const
{
return data;
}
};
转换运算符需要是const
。
关于c++ - 使用 std::copy - 错误 C2679:找不到正确的二进制 '=' 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6302899/