Я слишком много читаю StackOverflow и начал сомневаться во всем коде, который когда-либо писал, я продолжаю думать: «Это неопределенное поведение?» даже в коде, который работал целую вечность.
Так что мой вопрос - это безопасное и четко определенное поведение - приводить указатель на объект (в данном случае абстрактные классы интерфейса) к пустоте *, а затем приводить их обратно к исходному классу и вызывать метод, используя их?
Я полностью осознаю, что код, который делает это, вероятно, ужасен. Я бы даже не подумал написать это сейчас (это старый код, который я не хочу менять), поэтому я не ищу обсуждения лучших способов сделать это. Я уже знаю, как написать это лучше, если я когда-нибудь сделал это снова. Но если на самом деле это не так, чтобы полагаться на это в C ++, тогда мне придется взглянуть на изменение кода, если это просто ужасный код, то изменение не будет приоритетом.
Я бы не сомневался в чем-то таком простом год или два назад, но по мере того, как мое понимание C ++ возрастает, я на самом деле обнаруживаю, что все больше и больше беспокоюсь о безопасности кода в соответствии со стандартами, даже если он отлично работает. Возможно, чтение слишком большого количества переполнения стека иногда плохо для производительности: P