0

このコードがあれば

struct Unit{
    int coef; //coefficient
    int exp;  //exponent
};

class Func: private std::list<Unit>{
    public:
        Func();
        friend std::ostream& operator<<(std::ostream &, Func);
};

どうすれば印刷できますか?ここのコンセプトを使ってみました: http://www.cplusplus.com/forum/beginner/5074/ しかし、成功しませんでした:

ostream& operator<<(ostream &output, Func &pol)
{
    list<Unit>::iterator i;

    for( i = pol.begin(); i != pol.end(); ++i)
    {
        Unit test = *i;

        output << test.coef << " ";
    }

    return output;
}

そして、私はそれを正しく初期化しますか?

Func::Func()
{
    Unit test;
    test.coef = 0;
    test.exp = 0;
    Func::push_back(test);
}

ごめん。継承についてはこれが初めてです。自分で作ったクラスに関しては難しくはありませんでしたが。

更新されたコード:

struct Unit{
    int coef; //coefficient
    int exp;  //exponent
    Unit():coef(0),exp(0){}
};

class Func : public std::list<Unit>{
    public:
        Func();
        friend std::ostream& operator<<(std::ostream &, const Func &);
};

Func::Func()
{
    Unit test;
    Func::push_back(test);
}

ostream& operator <<(std::ostream &output, const Func& pol)
{
    for (list<Unit>::const_iterator i =  pol.begin(); i != pol.end(); output << i->coef << " " << i->exp << " ", ++i);

    return output;
}
4

2 に答える 2