Когда вы используете каждое наследование?защищенное наследование против общего наследования и дизайна OO
class Base{};
class Derived: protected Base{};
class Derived2: public Base{};
Мой случай:
я класс, называемый моментальный снимок, который содержит только методы GetXXX. Это легкий класс, используемый для хранения текущего состояния класса Value. Я также использую его для восстановления, сохраняя экземпляры этого класса долго после того, как экземпляр класса Value исчез. Класс Manager обрабатывает экземпляры класса Snapshot. Позвольте мне показать вам код:
class Snapshot
{
public:
Snapshot (const Snapshot * snap)
{
_x=snap->_x;
_y=snap->_y;
_z=snap->_z;
}
Snapshot(){_x=_y=_z=0;}
int GetX(){return _x;}
int GetY(){return _y;}
int GetZ(){return _z;}
~virtual Snapshot(){}
protected:
int _x,_y,_z;
};
class Value:public Snapshot
{
/*Very heavy class with a lot of components used to calculate _x, _y, _z*/
};
class Manager
{
public:
void Process(const Snapshot * snap)
{
}
};
Как вы относитесь к этому дизайну? Каковы альтернативы?
Благодаря
решения и вопросы
Решение: Я хотел бы создать функцию makeSnapshot которая будет возвращать объект Snapshot данным объектом Value.
Вопросы:
главная проблема: я послал снимки на очень часто (каждый второй, даже меньше), поэтому я не хочу брать на себя строительство и уничтожение стоимости небольшая проблема:
полуобщественный вопрос Мне нужно сделать Value другом снимка, так как я не хочу, чтобы
вводили сеттеры.
«... строительство и разрушение стоят незначительно ...», как вы собираетесь создавать снимки, не создавая их? Собираются ли передавать значения вместо снимка? –
Я считаю, что вашего описания недостаточно, поскольку представленный пример и ваши объяснения в комментариях кажутся немного запутанными. – Anonymous
@ Микола точно: я передаю значение и снимок взаимозаменяемо. @unknown (google) что не понимают в дизайне? Я расскажу больше, если что-то конкретное неясно. – 2009-03-13 15:37:13