我正在尝试将我的部分课程重载到string
,我无法让重载工作。或者,我也会有long long
重载,但我只是假设它与long long
而不是string
相同。
class FileData
{
public:
string extensions_;
unsigned long long containsBytes_;
};
string& operator = (string& s , FileData& fd)
{
s= fd.extensions_;
return s;
}
string extName = fileVector[0];
我一直得到的错误是ERROR:'operator ='必须是成员函数。 我也尝试过使用istream但是也没用。
有人知道我怎么能这样做吗?
答案 0 :(得分:4)
为了能够从您的班级分配字符串,您需要一个转换运算符:
class FileData
{
public:
// Conversion to string
operator string() const {return extensions_;}
string extensions_;
unsigned long long containsBytes_;
};
您只能将赋值运算符重载为类的成员,以便将分配给该类的对象。
答案 1 :(得分:3)
你不能重载std :: string的operator =。你可能想要的是一个演员:
class FileData
{
public:
string extensions_;
unsigned long long containsBytes_;
operator string()
{
return extensions_;
}
}