Приведение типа не удалось - PullRequest
       5

Приведение типа не удалось

0 голосов
/ 30 октября 2011

У меня есть что-то вроде:

class A { }
class B extends A { }

Затем я пытаюсь привести экземпляр A к B:

.
var a:A = obtainAInstance();
var b:B = B(a);

На это я получаю следующую ошибку:

Ошибка типа: ошибка # 1034: сбой приведения типа: невозможно преобразовать A в B.

Что может быть причиной этого?

Ответы [ 2 ]

3 голосов
/ 30 октября 2011

Ваш объект a является экземпляром A, но, поскольку A является родительским классом, а не B, он не может быть экземпляром B.Таким образом, вы не можете выполнить такое приведение.

Если ваша функция возвращает экземпляр B, вы можете привести a обратно к B и получить доступ ко всем его B членам, посколькуобъект на самом деле является B:

var a:A = obtainBInstance();
var b:B = B(a);
0 голосов
/ 30 октября 2011

попробуй var b:B = a as B;

        var o:Object = new Object();
        var ed:EventDispatcher = o as EventDispatcher;//this works
        //var ed:EventDispatcher = EventDispatcher(o); //this causes an error

однако у вас могут возникнуть проблемы с таким экземпляром B, если вызов свойств не определил его super - A

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...