Wpis z mikrobloga

@japer: Stworzyć interface, który będzie nadrzędny dla wszystkich typów. Potem tworzysz implementacje tego międzymordzia dla wszystkich typów jakie mają być przechowywane w drzewie.
  • Odpowiedz
@Hauleth: powiedzmy robię interfejs

CustomType
i co dalej? Muszę zrobić metodę która by pozwalała na zwrócenie tego obiektu, abym mógł przykładowo w AST operować na nim (powiedzmy - dodać dwa obiekty). I co teras? Jak pobrać z niego konkretny obiekt?

  • Odpowiedz
@japer: Albo definiujesz wszystkie działania jakie mogą być na danym typie wykonane, albo dodajesz metodę, która zwraca typ i na jej podstawie wykonujesz operacje. Jest wiele sposobów i wybór najlepszego zależy od tego do czego to potrzebujesz. Tworzysz własny język?
  • Odpowiedz
@Hauleth: jeśli definiuję interfejs, to jak mogę zwrócić typ zależny od implementacji? C++ jest językiem statycznie typizowanym, zatem to jest technicznie niemożliwe.

Jak na razie zrobiłem wirtualne przeładowanie operatorów w interfejsie. Tylko jak zwrócić konkretny typ :/
  • Odpowiedz
@Hauleth: wtedy mogę zwrócić unię przykładowo - int, double, string, List i String, i w zależności od enuma moge wybierać odpowiednie składniki z unii?
  • Odpowiedz
@japer: Unie mogą zawierać tylko POTy. Więc może być ciężko. Obiekty będą lepsze IMHO. Oraz bardziej rozszerzalne jak byś chciał potem dodać nowe typy.
  • Odpowiedz
@Hauleth: To zrobię enum-a i według enum-a będę rzutował na konkretne obiekty implementujące interfejs. Dodam metodę getType(), która będzie ten enum zwracać.
  • Odpowiedz