I am trying to implement a naive File System. I have this class
class BaseFile {
private:
string name;
public:
BaseFile(string name);
string getName() const;
void setName(string newName);
bool operator < (const BaseFile& str) const;
bool operator > (const BaseFile& str) const;
virtual int getSize() = 0;
};
and the subclass
class Directory : public BaseFile {
private:
vector<BaseFile*> children;
Directory *parent;
public:
Directory(string name, Directory *parent); r
Directory *getParent() const;
void setParent(Directory *newParent);
void removeFile(string name);
void removeFile(BaseFile* file);
void sortByName();
bool SortSize(BaseFile& a , BaseFile& b);
void sortBySize();
vector<BaseFile*> getChildren(); n
int getSize();
string getAbsolutePath();
};
I need to sort the vector<BaseFile*>
children once by the attribute size by activating the function SortBySize()
.
And by name by the function SortByName()
.
I cant use sort algorithm I want to use std::sort()
For the names I overloaded the operators <
>
and for the numbers(size) I want to define a custom comparison function.
I defined the function in the class Directory
. I tried to make is static it didn't work
bool Directory::SortSize(BaseFile& a , BaseFile& b)
{
return (a.getSize() < b.getSize());
}
but when I use std::(children.begin(), children.end(), sortSize)
I get "invalid use of non-static member function". Any help?