中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » [GCC][C++] 郁闷,GCC 的 ISO C++ 兼容性也太差了
作者:
标题: [GCC][C++] 郁闷,GCC 的 ISO C++ 兼容性也太差了 上一主题 | 下一主题
asbai
高级用户




积分 653
发帖 252
注册 2006-4-16
状态 离线
『楼 主』:  [GCC][C++] 郁闷,GCC 的 ISO C++ 兼容性也太差了

以下代码居然无法编译通过:
template<class _MSGTYPE,
                 class _CONTAINER = std::vector<_MSGTYPE>,
                 class _COMP      = std::less<typename _CONTAINER::value_type> >
class pri_msg_queue : public std::priority_queue<_MSGTYPE, _CONTAINER, _COMP>
{
public:   
        const value_type& front() const        {return top();}
        void pop_front()                       {pop();}
        void push_back(const value_type& iMsg) {push(iMsg);}
};
报错说value_type、top()、pop() 和 push() 都没定义,其实这些都是基类中的公有成员。非要写成这样:
template<class _MSGTYPE,
                 class _CONTAINER = std::vector<_MSGTYPE>,
                 class _COMP      = std::less<typename _CONTAINER::value_type> >
class pri_msg_queue : public std::priority_queue<_MSGTYPE, _CONTAINER, _COMP>
{
        typedef std::priority_queue<_MSGTYPE, _CONTAINER, _COMP> _BASE;

public:
        typedef typename _BASE::value_type value_type;
   
        const value_type& front() const        {return _BASE::top();}
        void pop_front()                       {_BASE::pop();}
        void push_back(const value_type& iMsg) {_BASE::push(iMsg);}
};
那还要基类和派生干吗?干脆把基类直接作为一个成员算了。

2006-6-12 16:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Michael
钻石会员





积分 10046
发帖 3039
注册 2002-11-11
状态 离线
『第 2 楼』:  

真得吗,如果是这样,那就不能叫做和标准的不兼容了,这简直是对C++的颠覆了。呵呵。

不过我刚才用MinGW试了一下,继承自基类模版的成员可以正常的在子类中使用,并不需要限定符啊。

我觉得在Windows下还是使用VC7比较好,编译出的代码的执行效率比GCC高出几倍。对标准的支持也不错。



简单就是美
2006-6-12 20:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
asbai
高级用户




积分 653
发帖 252
注册 2006-4-16
状态 离线
『第 3 楼』:  

嗯,我用的也是 MinGW——GCC 3.4.2,确实有这个问题。

不过真实代码中的类是定义在一个名空间中的,而不是直接放在全局名空间里。但这也完全不应当成为出现这种现像的理由,呵呵。

2006-6-12 23:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: