我写了个Book的类一开始如下:classBook{public:Book(stringname,stringauthor,stringpub,stringisbn,intremain,intborrowed):_bookName(name),_bookAuthor(author),_bookPub(pub),_bookISBN(isbn),_bookRemain(remain),_bookBorrowed(borrowed){}//...中间省略}ofstream&operator
2 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
是编译器自动转换在作怪。operator<<的第二个参数可以是string,你写了一个constructor可以把string转换成Book,同时Book也可以作为operator<<的第二个参数(即你写的那个函数),所以编译器不知道是直接调用string的那个版本,还是把string转换成Book然后调用book的版本。建议把Book(stringisbn)改成explicitBook(stringisbn)关闭自动转换
添加回答
举报
0/150
提交
取消