Я хотел бы написать библиотеку, которая может быть расширена. Вот примерная схема кода:
class Object
{
ActionProc* pAP;
};
class Sphere : public Object;
class Point : public Object;
class ActionProc
{
virtual Action( Object* ) = 0;
};
class ActionProcMove : public ActionProc
{
bool m_bCanMove;
virtual Action( Object* obj )
{
if( m_bCanMove )
{
//do some moving stuff
}
};
};
И пользователь этой библиотеки может расширить его так:
(опять же набросок кода)
class ActionProcSize : public ActionProc
{
bool m_bCanSize;
virtual Action( Object* obj )
{
if( m_bCanSize)
{
//do some sizing stuff
}
};
};
Хотя это сработает, это будет означать, что мне придется создать make-объект-процедуру для каждого объекта-объекта, который я создаю. Вместо этого я бы предпочел создать только один объект-процедуру для всех объектов, которым потребуется такой тип процедуры.
Или, другими словами, мне нужно место для хранения дополнительных переменных, необходимых для процедуры, связанной с объектом.
Обратите внимание, это не фактический код, это просто пример