Предположим, у меня есть класс Base, в котором есть переменная-член A * my_hash.
У меня также есть класс Extended, который наследуется от класса Base. У меня тоже есть класс B
который расширяет A.
class Base{
Base(): my_hash(new A) {}
//methods which use my_hash
protected:
A* my_hash;
};
class Extended:public Base{
//methods which use my_hash from A
//I cannot have a B* my_other_hash in this class
//I would like to substitute B* my_hash
//I cannot let Base create my_hash (of type A*) because that is not what I want.
};
Я бы хотел, чтобы Extended делал обычное (т.е. использует все, что он наследует от A), кроме
и с одним важным отличием я хочу, чтобы my_hash был B * вместо A *.
Всякий раз, когда что-то обращается к my_hash, через методы Extended или Base,
Я хотел бы, чтобы выполняемые методы были B *.
Одна вещь, чтобы попробовать:
У меня не может быть вызова метода (например, create_hash () в Base ()), который я переопределяю в Extended.
Это не работает, так как, кажется, нет никакого способа вернуться к классу Extended при создании хэша.
Я бы не хотел, чтобы Бейс даже знал о Б. Как мне это сделать?