typ pola definowany wartością innego pola

0

Witam, czy to jest możliwe?
np. mając typy:

enum typ_samochodu { samochod_osobowy=1, samochod_ciezarowy=2, autobus=3 }

enum klasa_osobowy {A=1, B=2, C=3, D=4, E=5, F=6, G=7, H=8, J=9)
enum klasa_ciezarowy {skrzynia=1, furgon=2, wywrotka=3, pojemnik=4, cysterna=5, hds=6, podest=7, osobowy=8, terenowy=9, wielozadaniowy=10, van=11, inny=12}
enum klasa_autobus {miejski=1, miedzaymiastowy=2, turystyczny=3, szkolny=4}

zdefinować klasę:

class
{
typ_samochodu typ;
klasa_samochodu klasa;
}

żeby klasa_samochodu zmieniała swój typ w zależności od wyboru typu samochodu?
albo jakoś automatycznie się rzutowała

tu jest przykład prosty, ale jeśli się weźmie więcej wartości i to, że każda z tych enum ma swoje odrębne podtypy musiałbym używać kilkudziesięciu zmiennych zamiast trzech (w przykładzie dwóch)

0

typ_samochodu nie jest w ogóle potrzebny, wystarczy:

class samochod<K>
{
   K klasa;
}

i użycie:

var ikarus = new samochod<klasa_autobus>();
0

A jak do tej definicji ikarus'a ustawić żeby był miejski i jak zdefinować np. star'a skrzyniowego?

0

No np. przez konstruktor:

class samochod<K>
    {
        K klasa;

        public samochod(K klasa)
        {
            this.klasa = klasa;
        }
    }
}

i użycie:

var ikarus = new samochod<klasa_autobus>(klasa_autobus.miejski);
var star = new samochod<klasa_ciezarowy>(klasa_ciezarowy.skrzynia);
var peugeot206 = new samochod<klasa_osobowy>(klasa_osobowy.B);
0

Dzięki, ostatnio musiałem się przesiąść z C++ na #C i widzę że parę rzeczy w #C robi się prościej / bezpieczniej. Przesiadkę wymusiło na mnie użycie silnika Unity.

W Unity powyższy kod działa jeśli dorobię dodatkową klasę, natomiast próba umieszczenia tego w klasie skryptu kończy informacją o konieczności poprawy błędów kompilacji i za razem brakiem raportowania jakichkolwiek błędów.

Nie wiem czy ktoś to ogarnia z poziomu Unity?

1 użytkowników online, w tym zalogowanych: 0, gości: 1