运算符<<重载“错误:传递'const ....”
ofstream& operator<<(ostream &outStream, const EventClass &eventObject)
{
outStream << eventObject.getEventName() << " event at "
<< eventObject.getEventTime() << endl;
return(outStream);
}
我相信这段代码足以分析错误。
当我编译我的代码时,出现以下错误:
错误:作为'std :: string EventClass :: getEventName()'的'this'参数传递'const EventClass'丢弃限定符[-fpermissive]
outStream << eventObject.getEventName()<<“event at”
错误:将'const EventClass'作为'int'的参数传递给'int EventClass :: getEventTime()'丢弃限定符[-fpermissive]
<< eventObject.getEventTime()<< endl;
错误:类型'std :: ofstream&{aka std :: basic_ofstream&''从std :: ostream {aka std :: basic_ostream}'表达式的引用无效初始化'
回报(outStream);
任何想法如何解决这些错误?
您需要确保getEventName
和getEventTime
声明为const
,如下所示:
std::string getEventName() const;
int getEventTime() const;
在EventClass
的声明和实现中。 这告诉编译器这些方法不会以任何方式修改对象的字段。
另外,运营商的最后一行应该是: return outStream;
编辑:也std::ofstream
是不一样的std::ostream
。 通常,对于operator<<
,它需要定义为:
std::ostream& operator<<(std::ostream& os, const EventClass& eventObject) {
//blah
}
包含任何流类型。
eventObject
是对const
对象的引用,所以它的getEventName()
和getEventTime()
方法也需要声明为const
,以指定它们不会修改它们被调用的对象,例如:
std::string getEventName() const;
int getEventName() const;
另外,你的运算符被声明为返回一个ofstream
,但它需要返回一个ostream
来匹配输入:
ostream& operator<<(ostream &outStream, const EventClass &eventObject)
链接地址: http://www.djcxy.com/p/73069.html