我在_ Date类中创建了_year,_day,_date作为私有整数。
错误:`_year'不是类型和类似的日期和星期一在写()
错误:在'istr >>((const oop244 :: Date *)'运算符>>'模糊重载) - > oop244 ::日期:: _今年C++ istream >>和ostream << errors
note: candidates are: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>&(*)(std::basic_istream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits]
std::ostream& Date::write(std::ostream& ostr) const
{
int year,mon,day;
return ostr<<year<< "/" <<mon<< "/" <<day;
this._year=year;
this._mon=mon;
this._day=day;
}
//overloading istream for object Date input
std::istream& Date::read(std::istream& istr)const
{
char c;
istr>>_year>>c>>_mon>>c>>_day;// char c for '/'
if(istr.fail())
_readErrorCode=1;
this->validate();
return istr;
}
//overloading << operator
std::ostream &operator<<(std::ostream& ostr,Date &d)
{
return d->write(ostr);
}
//overloading >> operator
std::istream& operator>>(Date &d,std::istream& istr)
{
return d->read(istr);
}
重载规则使这个模糊不清,这就是编译器所抱怨的。您需要将构造函数标记为显式。 – 2015-04-03 06:41:07
yanivx请你解释一下。 – 2015-04-03 07:09:05
夫妇的事情:1.你有一个错位的'}'。除非Date类中有'operator' - ''重载,否则'd->'应该是'd''。也许发布* real *代码? – WhozCraig 2015-04-03 07:11:06