Я думал о том, как решить проблему, которую у меня есть, и я не уверен, будет ли это работать или нет.Явная перегрузка оператора + наследование
Скажем, у нас есть базовый класс называется и 3 подкласса B, C и D.
A
^
-----------------
| | |
B C D
Также у нас есть три класса X, Y и Z.
В моей системе объектов типа B, C, D передаются как тип A, и обычно мне приходится преобразовывать объекты типа B, C, D в объекты X, Y или Z (это не бросок, я их вручную конвертирую, так как они совершенно разные).
Поэтому для преобразования типа объекта A в тип X, Y или ZI необходимо сначала проверить подтип, а затем инициализировать объект X, Y или Z с результатом некоторых операций над объектом A в зависимости от подтипа ,
Я думал о перегрузке явной операции наложения из A в X, Y или Z, просто делая тот же процесс, который я делал, когда я их преобразовал, но потом я подумал ... Возможно ли использовать полиморфизм и перегрузить отбрасывать из B, C и D в некотором роде, что, когда я добавляю новый подтип AI, не нужно менять код литья A? (Просто добавьте явную перегрузку броска к новому подтипу)
Надеюсь, у меня есть объяснил себе, извините, если что-то смущает.
Примечание: Я добавлю перегрузку произнесения на X, Y, Z
Итак, у вас есть 'A', но вы знаете, что это на самом деле' B', поэтому вы конвертируете его в 'X'. Это правильно? – svick
Нет, не знаю. Я просто знаю, что это подтип A, и я хочу преобразовать его в X. (И для Y и Z в других ситуациях) –
Я хочу что-то вроде: A mya = new * Подтип A *; X myx = (X) mya; –