Ранее я разместил вопрос о том, как перегружать строки, но когда я использую та же формула для unsigned long long
не работает.
Я попробовал typedef
, но это тоже не сработало.
typedef unsigned long long i64;
//a new class to hold extention types, and bytes.
class FileData
{
public:
//conversion operators
operator string(){return extensions_;}
operator i64() {return containsBytes_;}
string& operator= (FileData &);
i64& operator= (FileData &);
string extensions_;
i64 containsBytes_;
};
string &FileData::operator=(FileData& fd)
{
return fd.extensions_;
}
i64 &FileData::operator=(FileData& fd)
{
return fd.containsBytes_;
}
в этом коде две ошибки.
первый находится в строке 11:
Ошибка: нельзя перегружать функции, отличающиеся только типом возвращаемого значения.
второй находится в строке 22,
Ошибка: объявление несовместимо с "std::string &FileData::operator=(FileData& fd)" (объявлено в строке 17).
но если я удалю любое упоминание о преобразовании строк, оно все равно не сработает.
:%s/^\s*\d*|//
— но я согласен. - person Konrad Rudolph   schedule 08.04.2013operator =
, а не операторов преобразования. - person didierc   schedule 08.04.2013