【发布时间】:2015-07-15 20:47:41
【问题描述】:
我这里的 bool 方法应该是检查保存为私有对象“sudoku_”的多维向量中的字符“-”。如果找到“-”,则返回 true,否则返回 false。这真的很简单,所以我不知道为什么会出现这个错误:
“错误 C2678: 二进制 '==' : 未找到采用 'std::vector>' 类型的左侧操作数的运算符(或没有可接受的转换)”
这是我的代码:
bool Grid::checkiffull(){
string selement = "-";
if (find(sudoku_.begin(), sudoku_.end(), selement) != sudoku_.end())
return true;
else
return false;
}
编辑:
这是私有对象的定义:
vector<vector<string>> sudoku_;
错误显然在“xutility”文件第 3026 行:
template<class _InIt,
class _Ty> inline
_InIt _Find(_InIt _First, _InIt _Last, const _Ty& _Val, false_type)
{ // find first matching _Val
for (; _First != _Last; ++_First)
if (*_First == _Val)
break;
return (_First);
}
【问题讨论】:
-
你能说明
sudoku_的定义吗? -
去掉不相关的,添加相关的...
-
编译器错误消息的好处是它们包含错误所在的行号。我猜你的错误行号不在你显示的代码中的任何地方,主要是因为你显示的代码在任何地方都没有
==运算符。 -
注意:你的return语句对是一个反模式,你可以直接返回表达式的结果。
-
@JoachimPileborg:我认为它有:你还会如何实现
find? :)
标签: c++ class methods vector boolean