以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  请教个问题,C++ 编译时出错:algorithm(1862): error C2064: 项不会计算为接受 2 个参数的函数  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=34410)


--  作者:vystar
--  发布时间:6/15/2006 10:51:00 AM

--  请教个问题,C++ 编译时出错:algorithm(1862): error C2064: 项不会计算为接受 2 个参数的函数
源代码是对一个vector<vector<T*> >进行sort
predicate是
bool best(const vector<T*>& vec1, const vector<T*>& vec2)
{
      if(vec1.size() < vec2.size())
          return true;
      else if(vec1.size > vec2.size())
          return false;

      获取vec1的权值,获取vec2的权值;
      return weight1 <= weight2;
}

调用的地方
     sort(result.begin(), result.end(), best);

编译出错:
d:\Microsoft Visual Studio .NET 2003\Vc7\include\algorithm(1862): error C2064: 项不会计算为接受 2 个参数的函数
d:\Microsoft Visual Studio .NET 2003\Vc7\include\algorithm(1863): error C2064: 项不会计算为接受 2 个参数的函数
d:\Microsoft Visual Studio .NET 2003\Vc7\include\algorithm(1863): fatal error C1903: 无法从以前的错误中恢复;正在停止编译

请高手指教哪儿出问题了,谢谢。


--  作者:vystar
--  发布时间:6/16/2006 12:22:00 PM

--  
翻了下C++ Programming Language 和 C++ standard Library,已经找到问题所在了。问题描述的不完整,Best函数被我定义成了两个参数的成员函数,要用mem_fun适配器才行,不过加上对象本身,就是3元谓词了,STL没有3元的支持。我已经把Best函数修改成非成员函数了。没把问题描述清楚,浪费大家时间了,不好意思啊。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
47.852ms