开发者社区> 问答> 正文

vs2010提示不存在用户定义的从Date到const Date的转换

Date ReadDate(const string& prompt)
{
Date dt;
cout< cin>>dt;
return dt;
}
void SetDob(const Date& dtb)
{
dob=dtb;
} 
重载操作符
ostream& operator<<(ostream& os,Date& eml)
{
int mo=0,da=0,yr=0;
eml.GetDate(mo,da,yr);
os< return os;
}
istream& operator>>(istream& is,Date& eml)
{
int mo,da,yr;
is>>mo>>da>>yr; 
if(is)
eml.SetDate(mo,da,yr);
else
eml.SetDate(0,0,0);
return is;
}

(其中setDate和GetDate中另外定义的函数,这个应该没有问题)
这两个函数是在之前定义了的,第一个是定义在主函数前面声明的,第二个是在类person的头文件中定义的成员函数,
当我在主函数中调用pPerson->SetDob(ReadDate("Date of birth"));时,提示我vs2010提示不存在用户定义的从Date到const Date的转换,这是为什么呀,还有就是我在Date类中重载了输入输出操作符,为什么主函数中当cin>>一个Date对象时,提示没有与这些操作数匹配的>>操作符(文件不在一个cpp中,主程序包含了各个头文件的声明),求大神指点一下这是为什么呀

展开
收起
a123456678 2016-03-04 18:06:24 4524 0
1 条回答
写回答
取消 提交回答
  • 1.pPerson->SetDob(ReadDate("Date of birth"));分成两段写,估计是函数返回的一个临时对象的副本只能按值传递。
    2.operator>>可能只是针对一种数据类型定义了,你输入的数据类型和定义的不匹配

    2019-07-17 18:52:42
    赞同 展开评论 打赏
问答分类:
C++
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载