帮忙改个程序,谢谢

APIandMFC 2008-11-27 07:39:02
#include<iostream>
using namespace std;
class A{};
template<class T,typename A>
class B
{
T b;
A a;
public:
B()
{
cout<<b<<a<<endl;
}
};
int main()
{
A a;
B<int,A> b;
return 0;
}

...全文
108 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
APIandMFC 2008-11-27
  • 打赏
  • 举报
回复
谢谢大家 你们的回答让我受益很多!
overbai 2008-11-27
  • 打赏
  • 举报
回复
学习!
就是重载操作符方面的问题.
cout <<b <<a <<endl;这一句不能,因为你并不能保证,A,B类型的输出操作符都实现了;因为cout只能几种内置类型有效,如果
你想用,就要自己实现;
luojc714 2008-11-27
  • 打赏
  • 举报
回复
应该是你的那个class A中没有重载操作符:<<
当然如果传进去的另一个类型参数不是int的话,也得重载<<操作符。
就呆在云上 2008-11-27
  • 打赏
  • 举报
回复
你要重载一下<<操作符呵呵
因为ostream没有为A定义这个,修改如下:
#include<iostream>
using namespace std;
class A{
friend ostream & operator<<(ostream &os, const A &temp) {
return os << "hehe" <<endl;
}
};
template<class T,typename A>
class B
{
T b;
A a;
public:
B() {
cout<<b<<a<<endl;
}
};
int main()
{
A a;
B<int,A> b;
return 0;
}
xxgamexx 2008-11-27
  • 打赏
  • 举报
回复
重载输出运算

帮你改好了


#include <iostream>
using namespace std;
class A{
public:
int value;
A(){value=10;}
friend ostream & operator << (ostream & o ,A & a){
o << a.value;
return o;
}
};
template<class T,typename A>
class B
{
T b;
A a;
public:
B()
{
cout<<b<<a;
}



};
int main()
{

B<int,A> b;
return 0;
}

toadzw 2008-11-27
  • 打赏
  • 举报
回复
// cout<<b<<a<<endl;这一句不能,因为你并不能保证,A,B类型的输出操作符都实现了;因为cout只能几种内置类型有效,如果
你想用,就要自己实现;
nullah 2008-11-27
  • 打赏
  • 举报
回复

#include<iostream>
using namespace std;
class A{};
template<class T,typename A>
class B
{
T b;
A a;
public:
B()
{
//cout<<b<<a<<endl;//你需要重载类型T 和 A的<<
}
};
int main()
{
A a;
B<int,A> b;
return 0;
}

65,211

社区成员

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

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