编译不通过呀!简单问题

whowho 2004-01-13 05:12:59
#include <iostream>
using namespace std;
template<class type_name> class node;
template <class type> ostream& operator<<(ostream &os,node<type> &rh)
{
os<<rh._value<<endl;
return os;
};
template<class type_name> class node{
friend ostream& operator<<(ostream &,node<type_name>&);
public:
node(type_name value):_value(value){};
type_name retrun_value(){return _value;};
void set_value(type_name &rh){_value=rh;};
private:
type_name _value;
};
void main()
{
node<int>*s=new node<int>(10);
cout<<*s<<endl;
}
...全文
71 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
abitz 2004-01-13
  • 打赏
  • 举报
回复
不是支持不支持的问题,就应该这么写,虽然可能通不过(btw:您试了吗?)。
他原来的写法不对,支持的再好也不能通过。
redhat_xu 2004-01-13
  • 打赏
  • 举报
回复
就上面而言!

VC6.0 对新标准支持不是很好!
abitz 2004-01-13
  • 打赏
  • 举报
回复
既然你的operator<<是template,那么在类中的声明也应该是template。

template<class type_name> class node;
template <class type> ostream& operator<<(ostream &os,node<type> &rh)
{
os<<rh._value<<endl;
return os;
};

template<class type_name> class node{
template<class type> // 这里,类中友员的声明应为template
friend ostream& operator<<(ostream &,node<type>&);
public:
node(type_name value):_value(value){};
type_name retrun_value(){return _value;};
void set_value(type_name &rh){_value=rh;};
private:
type_name _value;
};
void main()
{
node<int>*s=new node<int>(10);
cout<<*s<<endl;
}
shuneng 2004-01-13
  • 打赏
  • 举报
回复
VC6对STL的支持不好
经常有许多WARNINGS
allen_zhaozhencn 2004-01-13
  • 打赏
  • 举报
回复
建议你使用vc.net来调试该程序.
allen_zhaozhencn 2004-01-13
  • 打赏
  • 举报
回复
看了你的代码,没有发现什么问题, 如果用的是VC6.0的话, 一定要加SP5, 这样才允许template function作为类的友元函数..

64,682

社区成员

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

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