У меня есть следующий код, где базовый класс определяет чисто виртуальную функцию, а производный класс определяет эту чисто виртуальную функцию для выполнения некоторых вычислений с закрытой переменной-членом базового класса var
(var
не будет изменено Однако). var
- это обычно какая-то большая структура.
С точки зрения дизайна я читал, что, как правило, неодобрительно делать var
защищенным элементом в этом случае. Будет ли лучший способ достичь того, чего я хочу, это просто передать var
в качестве аргумента в virtual_func()
?
Это вдохновило на второй вопрос. Что если я захочу изменить var
в virtual_func
? Это изменит ваш ответ?
class base
{
public:
void search()
{
//virtual func in derived class must use var in base class, but not change var
virtual_func();
}
private:
T var;
virtual void virtual_func() = 0;
};
class derived : public base
{
void virtual_func()
{
//does something with base class's var, but not alter it
}
};