template<typename T> class testClass{
public:
bool compare(const int& a, const int& b){
T x;
....
}
void sort(){
std::sort( data.begin() ,
data.end() ,
boost::bind<bool>(
&testClass<T>::compare,
this, _1 , _2 ) );
}
std::vector<int> data;
}
我有一个带有非静态成员函数的template-d类,用作std::sort
的比较器。比较器取决于typename T
参数。由于它有一个隐式的this
指针,我尝试boost::bind
指针this
。
然而,boost::bind<bool>(.......)
和boost::bind(....)
都不会编译。
以上示例在MSVC 2008上失败(因为我在非英语环境中我不确定英语中的确切消息,但可能抱怨任何一个原型都可以使所有必要的参数转换成为可能。)< / p>
答案 0 :(得分:0)
好吧,经过一番挖掘......问题确实不在于上面提到的片段。
原来是与另一个相关成员函数中的(Strange VC++ compile error, C2244)类似的问题。 compare
中调用的函数碰巧是一个模板函数,无法完全像上面问题中那样进行编译。我起初没有注意到这个错误。
我将部分代码从class.cpp
移至class.hpp
,现在可以正常运行。
一个愚蠢的MSVC错误,以及我犯的一个愚蠢的错误。