템플릿을 사용하여 다중 상속에 대한 대안으로 혼합 기능을 구현할 때 모든 코드가 헤더 파일에 있어야한다는 문제가 있습니다. 나는 그 문제를 해결하기 위해 추상 기본 클래스를 사용하려고 생각하고있다. 코드 샘플은 다음과 같습니다.추상 기반을 사용하여 템플릿 클래스의 개인 부분을 구현합니까?
class Widget
{
public:
virtual ~Widget() {}
};
// Abstract base class allows to put code in .cpp file.
class AbstractDrawable
{
public:
virtual ~AbstractDrawable() = 0;
virtual void draw();
virtual int getMinimumSize() const;
};
// Drawable mix-in
template<class T>
class Drawable : public T,
public AbstractDrawable
{
public:
virtual ~Drawable() {}
virtual void draw()
{ AbstractDrawable::draw(); }
virtual int getMinimumSize() const
{ return AbstractDrawable::getMinimumSize(); }
};
class Image : public Drawable<Widget>
{
};
int main()
{
Image i;
i.draw();
return 0;
}
누구나 전에 그 길을 걸었습니까? 내가 알아야 할 함정이 있습니까?