Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Реализация дерева (http://www.flasher.ru/forum/showthread.php?t=169334)

savva 03.10.2011 03:22

Реализация дерева
 
Здравствуйте.

Нужно реализовать дерево. Что-то вроде 2-3 дерева,но количество элементов заранее неизвестно.

Структура примерна такова.

класс граф
хранит в себе 2 указателя на голову и указатель для работы с графом.
класс вершина
хранит в себе данные и список вершин которые исходят из этой вершин.

Для хранения списка вершин я выбрал список,линейный однонаправленный,но возникла проблема с реализацией списка,а точнее с его типизированием.

В С++ есть шаблоны,как их реализовать в AS3?

Если нужны коды мои,могу скинуть сюда если попросите. Проблема возникла,когда я попытался произвести перебор по графу. Элемент списка имеет метод
Код:

public function getData() : Object
а мне нужно чтобы он возвращал тип вершины Vertex. Происходит не соответствие типов и программа не работает =/

stweet 03.10.2011 04:27

Что мешает создать класс Vertex и у наследоваться от Object, это и будит ваш тип данных.

-De- 03.10.2011 09:24

Шаблонов нет. Храните Object'ы и используйте приведение типов (от Object к Vertex , например).

savva 03.10.2011 12:20

Так а как сделать приведение от Object к Vertex? Я vertex не наследую от Object.

ТО бишь мне нужно отнаследовать vertex от object?

а тип списка какой делать? я просто в списке завёл конструкцию type:Class; и при создании списка передаю ему этот тип.

-De- 03.10.2011 12:42

Цитата:

Сообщение от savva (Сообщение 1036321)
Я vertex не наследую от Object.

Неправда =) В as3 всё от него наследуется)
Операторы as и is - азбука, надо иметь представление. Можно ещё погуглить as3 RTTI.

savva 03.10.2011 16:07

Если бы я наследовал то у меня не вылетала ошибка
"Graph.as(29): col: 44 Error: Implicit coercion of a value with static type Object to a possibly unrelated type Vertex. "
когда я
Код AS3:

temp= temp.getList().getElembyInde(j).getData();

где temp:Vertex
а функция
Код AS3:

public class L1Elem 
        {
private var target:Object;
public var next:L1Elem;
......
public function getData():Object
                {
                        return this.target;
                }

что за операторы as и is?( Применительно к моей ситуации)
Я программирую в основном на С++ Java и там такого нет:)
Просто решил попробовать написать ходилку на AS3. Хотя можно конечно Java applet сделать.

gloomyBrain 03.10.2011 16:28

Код AS3:

var element:Vertex =temp.getElementByIndex(j) as Vertex;
var data:Object = element.getData(); // тут тоже можно привести к желаемому типу


-De- 03.10.2011 16:31

Вы путаете апкаст и даункаст. В as3, c++ и java, если A наследуется от B, то А всегда скастуется к В, а наоборот - нет, надо руками, иногда с проверками. У нас А - Vector, B - Object. В Java точно так же всё наследуется от Object.
Применительно к вашей ситуации рекомендую учиться пользоваться гуглом - вбейте туда "as3 оператор as", "as3 оператор is".


Часовой пояс GMT +4, время: 07:22.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.