Абстрактный класс и оператор!= в C++ ⇐ C++
-
Anonymous
Абстрактный класс и оператор!= в C++
У меня возникла проблема с реализацией оператора!= в заданном классе, производном от абстрактного. Код выглядит следующим образом:
класс Abstract { публика: //чтобы упростить синтаксис, давайте использовать необработанный указатель виртуальный логический оператор!=(const Abstract* Other) = 0; }; Реализация класса { SomeObject impl_; //которые уже реализуют оператор!= публика: логический оператор!=(const Abstract* другое) { return Dynamic_cast(other)->impl_ != this->impl_; } }; Этот код работает, но у него есть недостаток: использование Dynamic_cast, и мне нужно обрабатывать ошибки в операции приведения.
Это общая проблема, которая возникает, когда функция конкретного класса пытается использовать некоторую внутреннюю информацию (недоступную на уровне абстрактного класса) для выполнения задачи.
Есть ли лучший способ решить подобную проблему?
Привет
У меня возникла проблема с реализацией оператора!= в заданном классе, производном от абстрактного. Код выглядит следующим образом:
класс Abstract { публика: //чтобы упростить синтаксис, давайте использовать необработанный указатель виртуальный логический оператор!=(const Abstract* Other) = 0; }; Реализация класса { SomeObject impl_; //которые уже реализуют оператор!= публика: логический оператор!=(const Abstract* другое) { return Dynamic_cast(other)->impl_ != this->impl_; } }; Этот код работает, но у него есть недостаток: использование Dynamic_cast, и мне нужно обрабатывать ошибки в операции приведения.
Это общая проблема, которая возникает, когда функция конкретного класса пытается использовать некоторую внутреннюю информацию (недоступную на уровне абстрактного класса) для выполнения задачи.
Есть ли лучший способ решить подобную проблему?
Привет
Мобильная версия