Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Абстрактный шаблон (http://forum.oszone.net/showthread.php?t=251955)

crashtuak 20-01-2013 21:41 2071251

Абстрактный шаблон
 
Есть описание абстрактного класса шаблона:
Код:

template <class T>
class AbstractDrawer
{
public:
    AbstractDrawer(FontFace &face):face(face)
    {
                ...
    }
    void setText(ulong * text, uint length)
    {
                ...
        layoutGlyphs(text,length);
    }
    void draw(int x, int y)
    {
        for(...)
        {
            drawGlyph(...);
        }
    }
protected:
    virtual void drawGlyph(BaseGlyph glyph, int x, int y) = 0;
    void layoutGlyphs(ulong * text, uint length)
    {
                ...
                ... = new T();
    }
private:
        ...
};

И его наследник:
Код:

class QDrawer : public FT::AbstractDrawer<QGlyph>
{
public:
    QDrawer(FT::FontFace face, QPainter &painter):AbstractDrawer(face),painter(painter)
    {}
protected:
    virtual void drawGlyph(BaseGlyph *glyph, int x, int y)
    {
        QGlyph* _glyph = (QGlyph*)glyph;
        painter.drawImage(x,y,_glyph->getImage());
    }
private:
    QPainter &painter;
};

При попытке создать QDrawer получаю сообщение об его абстрактности из за метода AbstractDrawer<T>::drawGlyph. В чем мой прокол?

ferget 20-01-2013 22:49 2071304

У вас функции разные

Код:

virtual void drawGlyph(BaseGlyph glyph, int x, int y) = 0;
virtual void drawGlyph(BaseGlyph *glyph, int x, int y)


crashtuak 25-01-2013 21:56 2075067

Ага, увидел, спасибо, жосткий фейл :(


Время: 21:29.

Время: 21:29.
© OSzone.net 2001-