Я пытаюсь создать класс, который будет служить базовым объектом, который затем будет подклассифицирован (= реализован) для обслуживания различных целей.C++ Наследование с чистыми виртуальными функциями
Я хочу определить одну или несколько чистых виртуальных функций, так что, как бы то ни было, подклассы базового класса необходимы и не забывают их реализовать.
Существует одна оговорка, подпись чистой виртуальной функции включает в себя тип базового объекта. После подкласса определение функции, конечно же, не соответствует определению базовых классов. Например .:
class BaseItem
{
public:
virtual std::string getDifferences(const BaseItem& item) = 0;
}
Таким образом, в производном классе, я хотел бы сделать:
class DerivedClass : public BaseItem
{
public:
virtual std::string getDifferences(const DerivedClass& item) = 0;
private:
std::string derivedItemCustomObject;
}
, который, конечно, компилятор не будет принимать. Конечно, я мог бы сделать это BaseItem
, но тогда я не могу использовать какие-либо объекты в производном классе.
Должен ли я использовать литье, чтобы выполнить это?
Пожалуйста, дайте мне знать, если мои намерения/вопрос не ясны.
Да, общий способ сделать это - сделать параметр BaseItem и, возможно, бросить его по мере необходимости в производных классах, используя dynamic_cast. –
@ybungalobill @BoPersson [Посмотреть здесь.] (Http: //meta.stackoverflow.com/q/2950/152657) –
@muntoo: [посмотреть здесь] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-and-taglines-and-salutations-be-removed-from -posts/2956 # 2956) – ybungalobill