gcc又丢脸了

flamingo2001 2006-09-12 10:25:35
以下程序,是在一个内部类中使用继承于父类的成员,
用VC6编译通过,用g++3.4.2报错:
cctest.cc|19| error: `m_n' undeclared (first use this function)

#include <iostream>
using namespace std;

template < typename T> // 这行去掉的话g++可以编译
class Outer
{
public:
class Base
{
protected:
int m_n;
};

class Derived : public Base
{
public:
Derived( int n )
{
m_n = n; // 将m_n改为 Base::m_n可以编译
}
void print() {
cout << m_n << endl;
}
};
};

int main()
{
Outer<int>::Derived(100).print();
return 0;
}

===================
唉,gcc这里又比较土了,矮人一头了!有没有人遇到类似问题的?
...全文
1492 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
cryincold 2006-09-13
  • 打赏
  • 举报
回复
debian .没看gcc是什么版本~

通过...
dowhileprogramming 2006-09-13
  • 打赏
  • 举报
回复
VC6.0没问题
dowhileprogramming 2006-09-13
  • 打赏
  • 举报
回复
我在 FreeBSD 6.1生产版本的 g++3.4.4中不能编译,在 mingw 的 g++3.4.5中也不能编译。
bohlee 2006-09-13
  • 打赏
  • 举报
回复
mark
sharkoasis 2006-09-13
  • 打赏
  • 举报
回复
3.4以前版本都没有问题,以后就有问题了!
不知道为什么?谁用VC2003或者VC2005在试试啊!
OOPhaisky 2006-09-12
  • 打赏
  • 举报
回复
我用的也是3.4.2,的确有同样问题
shark0001 2006-09-12
  • 打赏
  • 举报
回复
我的redhat9.0 g++也没问题。
mLee79 2006-09-12
  • 打赏
  • 举报
回复
gcc (GCC) 3.3.1 (cygming special)
木有问题 .....
flamingo2001 2006-09-12
  • 打赏
  • 举报
回复
进一步发现,是mingw-g++ 3.4.2对模板类继承的支持有问题,
下面这个例子编译也有问题,但刚刚找了个redhat9的机子(装的是gcc 3.2.2)编译运行都正常。

#include <iostream>
using namespace std;

template <typename T>
class Base
{
protected:
int m_n;
};

template <typename T>
class Derived: public Base<T>
{
public:
Derived( int n )
{
m_n = n;
}
void print() {
cout << m_n << endl;
}
};

int main()
{
Derived<int>(100).print();
}

/////////////////
到现在才明白,原来mingw-gcc和gcc还是不能等同来用的
i_noname 2006-09-12
  • 打赏
  • 举报
回复
4.2是楼上自己写的?
gcc.gnu.org写着Current release series: GCC 4.1.1
sinall 2006-09-12
  • 打赏
  • 举报
回复
嗯,gcc version 3.4.2 (mingw-special)确实有如你所说的问题。
flamingo2001 2006-09-12
  • 打赏
  • 举报
回复
晕。。。看来是mingw-gcc是问题。。。。。
sinall 2006-09-12
  • 打赏
  • 举报
回复
……bs楼主这种故弄玄虚的行为。
我的是gcc version 3.3.2,你的程序编译没有问题。
healer_kx 2006-09-12
  • 打赏
  • 举报
回复
偶一般看到g++的问题都是闪人的。
flamingo2001 2006-09-12
  • 打赏
  • 举报
回复
再说的清楚一些,问题应该是:
在g++中,模板类的内部类中无法使用继承于父类的成员。

不知道4.x版本的g++是什么情况?
utstar 2006-09-12
  • 打赏
  • 举报
回复
gcc 4.2也有问题

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧