У меня есть шаблон класса, в котором некоторые методы определены как виртуальные, чтобы дать возможность пользователю моего класса дать реализацию для него в его производном классе. Обратите внимание, что в моем классе шаблона есть несколько не виртуальных методов, которые используют виртуальный (виртуальный класс, который должен вернуть значение, вызывается в не виртуальном классе).
Можете ли вы дать мне простой пример правильного кода, в котором виртуальный метод родительского класса должен вернуть значение (но реализация реализована в дочернем классе), а значение, возвращаемое виртуальным методом в родительском классе, используется в других методах этого класса. Потому что я где-то видел (например, здесь: безопасно переопределить виртуальные функции С++), что это может вызвать некоторые проблемы, и определенный пользователем метод заметит переопределение виртуального метода родительского класса.
Примечание. Я программирую с помощью Code:: Blocks с использованием компилятора g++.
ИЗМЕНИТЬ: как запрошено здесь простой пример того, что я хочу:
template<typename T>
class parent {
public:
// Public methods that user can call
int getSomething(T t);
void putSomething(T t, int x);
// public method that user should implement in his code
virtual float compute(T t) { }
// protected or private methods and attributes used internally by putSomething ...
float doComplexeThings(...); // this can call
};
Метод compute() должен быть реализован пользователем (дочерний класс). Однако этот метод compute() вызывается putSomething() и doComplexeThings(), например.