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 :)