2

バイナリ ファイルの一部をさまざまな型の変数に読み込むクラスがあります。

class Foo {
public:
    size_t getSizeT();
    float getFloat();
    std::string getString();
private:
    std::ifstream stream;
};

この回答で説明されているように、ストリーム抽出演算子を実装したいと思います。

class Foo {
public:
    Foo &operator>>(Foo &foo, size_t &value);
    Foo &operator>>(Foo &foo, float &value);
    Foo &operator>>(Foo &foo, std::string &value);
private:
    std::ifstream stream;
};

コードは次のエラー メッセージでコンパイルに失敗します: error C2804: binary 'operator >>' has too many parameters。ストリーム抽出演算子を適切にオーバーライドするには? タイプを区別し、連鎖可能にする必要があります。

4

2 に答える 2

3

無料機能として、オペレーターの署名は次のとおりです。

Foo& operator >>(Foo& foo, size_t& value);

メンバー関数(あなたの場合)として、次のようにする必要があります。

Foo& operator >>(size_t& value);
于 2014-05-18T15:51:32.203 に答える