Абстрактный шаблон
Есть описание абстрактного класса шаблона:
Код:
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. В чем мой прокол?
|
У вас функции разные
Код:
virtual void drawGlyph(BaseGlyph glyph, int x, int y) = 0;
virtual void drawGlyph(BaseGlyph *glyph, int x, int y)
|
Ага, увидел, спасибо, жосткий фейл :(
|
Время: 21:29.
© OSzone.net 2001-