【发布时间】:2009-08-19 14:24:09
【问题描述】:
#include<iostream>
#include<vector>
#include<algorithm>
class Integer
{
public:
int m;
Integer(int a):m(a){};
};
class CompareParts
{
public:
bool operator()(const Integer & p1,const Integer & p2)
{
return p1.m<p2.m;
}
}obj1;
int main()
{
std::vector<Integer> vecInteger;
vecInteger.push_back(Integer(12));
vecInteger.push_back(Integer(13));
vecInteger.push_back(Integer(5));
vecInteger.push_back(Integer(7));
vecInteger.push_back(Integer(9));
Integer obj2();
std::sort(vecInteger.begin(),vecInteger.end(),obj1);
std::sort(vecInteger.begin(),vecInteger.end(),obj2);
}
为什么第二个排序函数中的obj2会导致编译器错误。
【问题讨论】:
-
请务必将编译错误添加到问题中。这将有助于诊断问题。
-
"排序函数不使用在堆栈上创建的函数对象?"你在标题中漏掉了一个字。我必须点击才能看到你的意思是编译而不是工作。