Otóż pisze własnie klase która reprezentuje zmienną i może ona zmieniać swoj typ podczas działania programu (np z int na char i odwrotnie).
Gdy zabrałem sie za pisanie do nich operatorów okazało się to strasznym tasiemcem, a każda zmiana kodu będzie się ciągneła lawinowo. Część listingu funkcji dla operatora +:
Objaśnienia:
-'zmienna' dziedziczy 'wartosc' publicznie
- nazwy Integer, Char... sa typu enum
- skladowa 'dane' to 'void*'
Zmienna operator+ (Wartosc& z1, Wartosc& z2)
{
Zmienna temp;
switch (z1.typ)
{
case Integer:
switch (z2.typ)
{
case Integer:
temp.typ = Integer;
temp.dane = new int(*((int*)z1.dane) + *((int*)z2.dane));
break;
/* tu jeszcze sie znajduja 4 typy*****************/
case Char:
temp.typ = Integer;
temp.dane = new int(*((int*)z1.dane) + *((char*)z2.dane));
break;
}
break;
case Float:
switch (z2.typ)
{
case Integer:
temp.typ = Float;
temp.dane = new float(*((float*)z1.dane) + *((int*)z2.dane));
break;
case Float:
/* itd ***********************/
Ogólnie klasa może przyjmować 6 róznych postaci.
Kod jednego operatora zajmuje mi 160 linijek... -.-
Jest jakiś sposób żeby zwalczyć tego tasiemca?