template高手进,VS2010和VS2008的不同
一个模板函数,在VS2008下能正常编译运行,但VS2010就报错。
想做一个判断,检查一个vector里的东西是否是顺序存放的,如果是返回true,否则返回false,vector里可以是任何类型。
放在一个类的private里
template<typename T, class function>
bool checkSort(const vector<T>& vt, function CompareT);
实现
template<typename T, class function>
bool 类名::checkSort( const vector<T>& vt, function CompareT )
{
...
}
同样的写法在VS2008里没有问题,但在2010里报如下错
错误1error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
[解决办法]
- C/C++ code
template<class _RanIt, class _Pr> inline void sort(_RanIt _First, _RanIt _Last, _Pr _Pred) { // order [_First, _Last), using _Pred _DEBUG_RANGE(_First, _Last); _DEBUG_POINTER(_Pred); _Sort(_Unchecked(_First), _Unchecked(_Last), _Last - _First, _Pred); }
[解决办法]
目测未 include<vector>
using std::vector;
- C/C++ code
template<typename T, class function>class C{public: bool checkSort(const vector<T>& vt, function CompareT);};template<typename T, class function>bool C[color=#FF0000]<T,function>[/color]::checkSort(const vector<T>& vt,function CompareT){ return true;}
[解决办法]
头文件,工程设置之类的 自噶对比哈
[解决办法]
把比较函数前边,加上 "&类名::"
[解决办法]
如果是静态函数,就类名::函数名传递过去,如果不是的话就需要利用对象调用咯