2

これは私がこれまでに試したことです:

class Fahrzeug
{
public:

    std::string Id() const;
    void Id(const std::string &id);

    friend std::ostream& operator<< (std::ostream &out, const Fahrzeug &fzg)
    {
        out << Id();
        return out;
    }

private:
    struct DatenImpl;
    boost::scoped_ptr<DatenImpl> _datenImpl;
};

これにより、コンパイラ エラーが発生します。

エラー C2352: Id() - 非静的メンバー関数の不正な呼び出し

「にきびのある」クラスに ostream operator<< を実装するにはどうすればよいですか?

4

1 に答える 1

9

あなたの定義は次のとおりです。

friend std::ostream& operator<< (std::ostream &out, const Fahrzeug &fzg)
{
    out << fzg.Id();  // <--- qualify call to Id()
    return out;
}

演算子はclassメンバーではありませんが、 内で定義されていclassます。

于 2012-04-30T13:29:24.457 に答える