这个类模版哪里有问题?VC++6.0

template<typenamet>classcomplex{protected:treal,image;public:complex(tr1=0,ti1=0){rea... template <typename t>
class complex
{
protected:
t real, image;
public:
complex(t r1 = 0, t i1 = 0)
{
real = r1;
image = i1;
}
template <typename t>
friend ostream &operator<<(ostream &output, const complex<t> &c)
{
output<<"complex: "<<c.real<<'\t'<<c.image<<endl;
return output;
}
};

D:\我的文档\MyProject\example\10\10_08\10_08.cpp(19) : error C2562: '<<' : 'void' function returning a value
D:\我的文档\MyProject\example\10\10_08\10_08.cpp(16) : see declaration of '<<'
D:\我的文档\MyProject\example\10\10_08\10_08.cpp(26) : see reference to function template instantiation 'void __cdecl operator <<(class std::basic_ostream<char,struct std::char_traits<char> > &,const class complex<int> &)' being compiled
执行 cl.exe 时出错.
展开
 我来答
cqlx86
2012-05-03 · 超过40用户采纳过TA的回答
知道答主
回答量:162
采纳率:0%
帮助的人:102万
展开全部
输入输出流>>,<<的重载的实现语句要放在类定义里,这个比较特殊。把下面的代码移到定义语句里,就可以了。
ostream& operator<<(ostream& os,const Time& t)
{
os<<"hours is: "<<t.hours<<" ,minutes is: "<<t.minutes<<endl;
return os;
}
追问
应该还有friend,我把template 给去了,并在类定义了友元函数。就没出错了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式