[英]overloading operators error: no matching function
我的FileDir.cpp实现文件中有这个重载的运算符:
std::ostream& operator<< (std::ostream &out, const FileDir &obj) {
out << obj.toString();
return out;
}
这是我的toString()函数:
string FileDir::toString()
{
std::string whatever;
std::stringstream converter;
converter << size;
converter >> whatever;
std::string combined;
if (type == false) {
combined = name + " " + whatever + "kb";
}
if (type == true) {
combined = name + "/" + " " + whatever + "kb";
}
return combined;
}
这是我得到的错误:
FileDir.cpp: In function ‘std::ostream& operator<<(std::ostream&, const FileDir&)’:
FileDir.cpp:125:25: error: no matching function for call to ‘FileDir::toString() const’
out << obj.toString();
^
FileDir.cpp:125:25: note: candidate is:
FileDir.cpp:84:8: note: std::string FileDir::toString() <near match>
string FileDir::toString()
^
FileDir.cpp:84:8: note: no known conversion for implicit ‘this’ parameter from ‘const FileDir*’ to ‘FileDir*’
这是我的FileDir.h头文件:
#include <sstream>
class FileDir {
public:
FileDir();
FileDir(std::string nameVal, long sizeVal = 4, bool typeVal = false);
FileDir(const FileDir &obj);
~FileDir(); // destructor
long getSize() const;
std::string getName() const;
bool isFile() const;
std::string rename(std::string newname);
long resize(long newsize);
std::string toString();
bool operator== (const FileDir &dir1);
bool operator<(const FileDir &obj);
private:
std::string name;
long size;
bool type;
};
我认为我的toString()声明有问题,但我不确定。
如何解决错误?
您没有将toString
声明为const
成员函数(可以在const
对象上调用的const
)。 operator<<
的参数obj
是const
,因此toString
必须是。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.