Sprężenie liczby zespolonej

0

Witam!

Mam do napisania program, który operuje na typie danych podanym jako stała symboliczna. Np.
#define TYP double
/
#define TYP zespolona
Ze względu właśnie na tę liczbę zespoloną potrzebuje kawałka kodu który liczyłby jego sprężenie. Ważnym punktem polecenia jest to aby zmiana typu danych, wymagała wyłącznie zmiany wartości stałej TYP, bez edycji pozostałej części programu.
Napisałem więc taki kod:

TYP con(TYP a)
{
    #if TYP == zespolona
        a.im(-1*a.im);
    #endif
    return a;
}

W czasie kompilacji jednak, zwracany jest błąd
zespolona.cpp|44|error: request for member 'im' in 'a', which is of non-class type 'double'
W jaki inny sposób mogę to ominąć? Myślałem też o stworzeniu 2 funkcji jedna

zespolona con(zespolona a)
{
 a.im(-1*a.im());
return  a;
}

druga

(TYP==zespolona?double:TYP) con((TYP==zespolona?double:TYP) a)
{
 return a;
}

Nie wiem jednak jak zmusić preprocesor do prawidłowej interpretacji tego.
Bardzo prosiłbym o pomoc :)

0
zespolona con(zespolona a) { ... }
double con(double a) { ... }

TYP a;
TYP b=con(a);
0

No tak, ale można dać też inne typy, niekoniecznie te 2. Chociaż jakoś strasznie dużo to też ich nie ma, i można by je wypisać...
Zresztą najprostsze sposoby są najlepsze, trochę się za bardzo wciągnąłem w kombinowanie, dzięki :)

0

Jak się spręża liczby?

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