Есть ли способ в C++ создать свой класс таким образом, чтобы указатель на ваш класс дал указание dynamic_cast <>() как передать другому классу, для которого вы завершаете реализацию? Привлечет ли оператор трюк? Представьте, что у меня есть базовый класс абстрактного интерфейса и выведите конкретный элемент из этого, а также конкретный B, но конкретный B обертывает интерфейс объекту типа specificA. Если я получаю запрос, чтобы бросить в concreteA из concreteA, я хотел бы, чтобы работать:Могу ли я преподавать dynamic_cast <>() новые трюки?
class Abstract {
public:
virtual void interface() = 0;
};
class concreteA : public Abstract {
public:
virtual void interface();
};
class concreteB : public Abstract {
public:
concreteB(concreteA &underlying)
: _underlying(&underlying) {
}
virtual void interface();
operator concreteA*() {
return _underlying;
}
private:
concreteA *_underlying;
};
void
myTest() {
concreteA myClassA;
concreteB myClassB(myClassA);
Abstract *abstract = &myClassB;
concreteA *underlying = dynamic_cast<concreteA *>(abstract);
}