私は素朴なファイルシステムを実装しようとしています。 は、私はこのクラス属性以上のC++カスタムコンパレータ
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;
};
と私は機能SortBySize()
を活性化することにより、属性のサイズによって、一度vector<BaseFile*>
子供をソートする必要があるサブクラス
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();
};
を持っています。 名前で関数SortByName()
によって。 私は事業者<
>
と私はカスタム比較関数を定義したい番号(サイズ)のために、オーバーロード名についてstd::sort()
を使用するソートアルゴリズムを使用傾けます。
クラスDirectory
で関数を定義しました。私はそれが
bool Directory::SortSize(BaseFile& a , BaseFile& b)
{
return (a.getSize() < b.getSize());
}
を動作しませんでした静的で作ってみましたが、私はstd::(children.begin(), children.end(), sortSize)
を使用するとき、私は「非静的メンバ関数の無効な使用」を取得します。 助けてください?ラムダ式を使ったサイズでソートするには
は '' static'メンバ関数をSortSize'ください。 –
これはC++を使った私の3日目です...より具体的なことができます –
もしあなたがその新しい人なら、あなたは少し速く走っていると思います。深呼吸を取って、いくつかのステップを取り戻す、[良い初心者の本をいくつか入手する](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) 。本は、あなたが知る必要があることを教えるべきです。 –