Абстрактный класс и оператор!= в C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Абстрактный класс и оператор!= в C++

Сообщение Anonymous »


У меня возникла проблема с реализацией оператора!= в заданном классе, производном от абстрактного. Код выглядит следующим образом:

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

Это общая проблема, которая возникает, когда функция конкретного класса пытается использовать некоторую внутреннюю информацию (недоступную на уровне абстрактного класса) для выполнения задачи.

Есть ли лучший способ решить подобную проблему?

Привет
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»