首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

template,VS2010和VS2008的不同

2012-07-28 
template高手进,VS2010和VS2008的不同一个模板函数,在VS2008下能正常编译运行,但VS2010就报错。想做一个判

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;}
[解决办法]
头文件,工程设置之类的 自噶对比哈
[解决办法]
把比较函数前边,加上 "&类名::"

探讨

引用:

目测未 include<vector>
using std::vector;
C/C++ code

template<typename T, class function>
class C
{
public:
bool checkSort(const vector<T>&amp;amp; vt, function CompareT);

};……

[解决办法]
如果是静态函数,就类名::函数名传递过去,如果不是的话就需要利用对象调用咯

热点排行