游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4222|回复: 6

如何对std::list<接口类>进行排序

[复制链接]

1

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2007-6-4 04:50:00 | 显示全部楼层 |阅读模式
有没有人遇到过无法用std::list指针排序的问题。如果有谁能成功修改并编译这段代码的,请赐教!

因为要存储的单元都是多态的,所以只能用指针来做模版参数
class Unit
{
public:
virtual int getID();
};
// class UnitB: public Unit {......}
class UnitA:public Unit
{
//......
};

std::list<Unit*> lstUnits;
typedef Unit* UnitPtr;
bool UnitCompare(const UnitPtr& a, const UnitPtr& b){return a->getID()<b->getID();}
//......insertions
lstUnits.sort(UnitCompare); //error C2664: 'void __thiscall std::list<struct Unit *,class std::allocator<struct Unit *> >::sort(struct std::greater<struct Unit *>)' : cannot convert parameter 1 from 'UnitCompare' to 'struct std::greater<struct Unit *>'
        No constructor could take the source type, or constructor overload resolution was ambiguous

16

主题

280

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
QQ
发表于 2007-6-4 07:51:00 | 显示全部楼层

Re: 如何对std::list<接口类>进行排序

我用2005运行了,没啥错误,用了控制台应用程序 [em10]

#include &lt;list&gt;

class Unit
{
public:
virtual int getID();
};
// class UnitB: public Unit {......}
class UnitA:public Unit
{
//......
};

std::list&lt;Unit*&gt; lstUnits;
typedef Unit* UnitPtr;
bool UnitCompare(const UnitPtr&amp; a, const UnitPtr&amp; b){return a-&gt;getID()&lt;b-&gt;getID();}
//......insertions
int main()
{
lstUnits.sort(UnitCompare);
}

16

主题

280

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
QQ
发表于 2007-6-4 07:52:00 | 显示全部楼层

Re: 如何对std::list<接口类>进行排序

函数都不返回吗???

1

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2007-6-4 11:17:00 | 显示全部楼层

Re: 如何对std::list<接口类>进行排序

我在vc 6.0 的编译环境里写的,无法将比较的函数的原型传递排序的调用中去。
可能vc 2005可以吧。晕!
函数有返回的,它比较两个指针对象的成员值来排序.就是不能通过编译

7

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2007-6-4 17:46:00 | 显示全部楼层

Re: 如何对std::list<接口类>进行排序

可能是vs6.0中STL版本太低或者是编译器对C++标准的支持不好

103

主题

1432

帖子

1458

积分

金牌会员

Rank: 6Rank: 6

积分
1458
QQ
发表于 2007-6-5 14:24:00 | 显示全部楼层

Re:如何对std::list<接口类>进行排序

人所共知, vc6 对模板语法支持非常不好.

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
发表于 2007-6-5 19:16:00 | 显示全部楼层

Re:如何对std::list&lt;接口类&gt;进行排序

sort能这么用么? O_o

试验,编译可以通过…… 原来可以这么sort啊,呵呵
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 05:43

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表