BCB5和BCB6中的traits重载问题

TopCat 2003-01-23 06:12:43
原帖请见
http://expert.csdn.net/Expert/topic/1387/1387614.xml?temp=.6283838

这里不重贴了,不便之处请见谅。
...全文
29 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
TopCat 2003-01-24
stl的路径应该没错,只要把上面的mystring改成string,程序就可以正常运行
回复
tomatopj 2003-01-24
我没看stl的代码
但我觉得只要符合标准的stl都应该支持这么写
而且是link error
所以我还是认为
是不是stl的lib路径设错了?
回复
TopCat 2003-01-24
另外那个1.OBJ是个什么东东?
——我偷懒,测试代码的文件名就是1.cpp,呵呵……

to ckacka(小红帽) :
——我是这么理解的,编译通过表示编译器已经完全“看懂”了我的代码。但是链接通不过,说明我漏写了一些实现,但是我不知道到底为什么会漏实现。

既然6可以,为什么还用5呢?
——这个问题是这样的,我本人已经在用6了,只是最近在帮朋友修改一份代码,他的程序是BCB 5编译的,他的程序里面有一个排序功能,一开始我就用STL的string和sort帮他完成了。但是这并不符合他的要求,因为他需要一个忽略大小写的排序结果。很自然的,我就想到了重载traits。但是我修改代码后,发现在BCB5下居然编译通不过,我大吃一惊,难道我的代码写错了?于是就写了上面这个测试代码(本质是一样的)。结果就发现BCB6下编译确实可以,但是BCB5下不行。
在松了一口气的同时,我在想,那么那些用BCB5的人难道就不能完成这个“忽略大小写排序”的要求了吗?我想肯定不会的,只是可能需要做一些变化(这种区别在使用STL容器而重载运算符时,也碰到过)。现在的问题是我不知道如何变化,所以问了这个问题。希望对大家也有一些启发。

That's all.
回复
ckacka 2003-01-24
既然6可以,为什么还用5呢?
很可能是编译器5对标准支持的不够好,甚至错误的理解代码意图。
回复
tomatopj 2003-01-24
是不是因为stl和lib的版本不同?
比如stl是rw的而lib是stlport编译的
另外那个1.OBJ是个什么东东?
怎么会跑到那儿去resolve?
回复
TopCat 2003-01-24
看来这个rw stl还真是……,哎……
回复
topikachu 2003-01-24
和编译器没关系
在bcc55下用stlport版,这段代码也可以正常编译连接
不过用原来rw版编译通过,连接失败。

没仔细看rw对string的实现,出两个馊主意

要么你写一个自定义的排续准则(这个影响比较大吧)
要么你用stlport在bcc55下重新编译一下
回复
发帖
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
帖子事件
创建了帖子
2003-01-23 06:12
社区公告
暂无公告