У меня сейчас проблемы с dynamic_cast <> и тем, как я структурировал свой код.Итак, у меня есть класс Manager, который получает указатель и пытается проверить, является ли он производным объектом, и, если это так, запустить некоторые дополнительные коды в операторе if.Но для того, чтобы dynamic_cast <> работал, требуется, чтобы определение класса предшествовало фактическому использованию dynamic_cast <>.
Итак, я поменял месторасположение класса Manager и определение класса Derived, чтобы сделатьопределение производного класса должно прийти раньше, чем класс Manager.Но теперь у меня появляются сообщения об ошибках, в которых говорится, что «Менеджер» - неопределенный тип.Я предполагаю, что для передачи Manager в качестве ссылки класс Derived требует, чтобы сначала было определено определение класса Manager.
Мое лучшее решение, о котором я могу подумать, это вместо передачи класса Manager в качестве ссылки,передать его в качестве указателя (который я не очень фанат, так как знаю, что класс Manager всегда будет действительным указателем, поэтому бессмысленно делать его указателем).Мне просто интересно, есть ли какое-нибудь альтернативное и лучшее решение, чем у меня.
Заранее большое спасибо!
Редактировать: мне, к сожалению, нужны все определения классов и реализации длябыть в одном файле, поэтому разбиение их на файлы .h и .cpp является менее идеальным.Для людей, спрашивающих, да, это домашнее задание, но мой профессор хочет, чтобы это было в одном файле.
class BaseClass
{
virtual VirtualClassName() = 0;
};
class Manager
{
void FunctionNameOne(const BaseClass* const ClassPointer)
{
if(Derived* DerviedPtr = dynamic_cast<Derived*>(ClassPointer))
{
//Do stuff with DerviedPtr
}
}
};
class Derived : public BaseClass
{
Void FunctionNameTwo(const Manager& Manager)
{
//Do stuff with Manager
}
};