找回密码
 注册
查看: 782|回复: 4

在vc下可以编译通过的C++代码,可是拿到gcc下去编就失败

[复制链接]
发表于 2005-8-26 09:42:53 | 显示全部楼层 |阅读模式
代码其实很简单
#include <list>
using namespace std;
template<typename T>
class mylist
{
public:
    add(T* param)
    {
          m_list.pop_back(param);
    }
protected:
     list<T*> m_llist;
};

class test
{
public:
        void foo() {}
};

void main()
{
         mylist<test> ml;
         ml.add(new test());
}


在VC下可正常通过,但是在gcc下被告知list接受的不能接受T*的模板参数?

到底怎么回事啊。。。是不是我哪里没有做好配置,还是gcc本身不支持如此简单的 C++特性?
发表于 2005-8-26 22:33:51 | 显示全部楼层
拿gcc来编译c++啊,gcc好像只能编译不能连接.用g++.
是在vc.net下编译的吧.
回复

使用道具 举报

发表于 2005-8-27 12:40:20 | 显示全部楼层

Re: 在vc下可以编译通过的C++代码,可是拿到gcc下去

[quote:d4224be829="waterflier"]代码其实很简单
#include <list>
using namespace std;
template<typename T>
class mylist
{
public:
void add(T* param)  //add void
    {
          m_list.push_back(param);  //not pop_back
    }
protected:
     list<T*> m_llist;
};
....
int main() //return int
//void main()
{
         mylist<test> ml;
         ml.add(new test());
}
[/quote]
回复

使用道具 举报

发表于 2005-8-27 16:12:13 | 显示全部楼层

Re: 在vc下可以编译通过的C++代码,可是拿到gcc下去

[quote:c806efc13f="dzho002"][quote:c806efc13f="waterflier"]代码其实很简单
#include <list>
using namespace std;
template<typename T>
class mylist
{
public:
void add(T* param)  //add void
    {
          m_list.push_back(param);  //not pop_back
    }
protected:
     list<T*> m_llist;
};
....
int main() //return int
//void main()
{
         mylist<test> ml;
         ml.add(new test());
}
回车
[/quote][/quote]
回复

使用道具 举报

发表于 2005-8-27 18:55:38 | 显示全部楼层
m_list.pop_back(param);
这一句我不知道你对不对,我怎么印象中,list的pop_back是无参的啊,即使你想加记录也应该是push_back才对啊,如何改为push_back(param),程序肯定没有问题,用g++编译。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-8 02:24 , Processed in 0.046129 second(s), 15 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

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