一个关于模板的奇怪现象, 大家进来看看

rj008 2006-11-18 06:32:08
template <class T>
class A {

private:
int i;
public:
void get();
};

template <class T>
class B {
private:
int j;
public:
void get();
};

template <class T>
void A <T> :: get() {

A a1; //这里有没有<T>, vc都不报错, 而且程序执行也没有问题
A<T> a2;
B b1; //这里有没有<T>, vc都不报错, 而且程序执行也没有问题
B<T> b2;
}

template <class T>
void B <T> :: get() {

A a1; //这里有没有<T>, vc都不报错, 而且程序执行也没有问题
A<T> a2;
B b1; //这里有没有<T>, vc都不报错, 而且程序执行也没有问题
B<T> b2;
}

我用的是vc6.0
请大家指点
...全文
175 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2006-11-19
  • 打赏
  • 举报
回复
template <class T>
void A <T> :: get() {

A a1; //这里有没有<T>, vc不报错, dev c++也不报, 而且程序执行也没有问题
A<T> a2;
这个不报错,是符合C++标准的规定的。A于此处就是自动作A<T>解释
rj008 2006-11-19
  • 打赏
  • 举报
回复
我在dev c++里试了一下,发现有些两的地方dev c++报错, 但还有两个不报

template <class T>
void A <T> :: get() {

A a1; //这里有没有<T>, vc不报错, dev c++也不报, 而且程序执行也没有问题
A<T> a2;
B b1; //这里dev c++报错
B<T> b2;
}

可能真的是编译器的问题吧

template <class T>
void B <T> :: get() {

A a1; //这里dev c++报错
A<T> a2;
B b1; //这里有没有<T>, vc不报错, dev c++也不报, 而且程序执行也没有问题
B<T> b2;
}
jixingzhong 2006-11-18
  • 打赏
  • 举报
回复
VC6 对标准C++ 的支持存在很多小问题,
可能不是致命的,
但是往往带来一些麻烦 ~~

如果是 标准C++ 程序,
建议用 Dev C++ ...
楼主不妨再试试 ~
taodm 2006-11-18
  • 打赏
  • 举报
回复
VC6,对c++标准的支持极差,直接扔了换VC7以上版本或者devcpp。
没啥值得多说的

64,647

社区成员

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

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