Napisałem klasę posiadającą bufor, w którym zapisane są różne zmienne różnego typu.
Np.:
- Kod: Zaznacz cały
Byte Bufor[30000] = "T.u. .n.a.p.i.s.0.a.65535.255.I. .z.n.o.w.u. .n.a.p.i.s";
Bufor posiada 6 zmiennych:
1. string o długości 8 (Tu napis)
2. bool o dł. 1 (0)
3. char o dł. 1 (a)
4. int o dł. 4 (bo sizeof(int) = 4) (65535)
5. Byte o dł. 1 (255)
6. string o dł. 13 (i znowu napis)
Problem pojawia się kiedy chcę zwrócić te zmienne.
Napisałem funkcję zwracającą odpowiednią zmienną pod podanym indeksem:
- Kod: Zaznacz cały
template<class Type>
Type Klasa::GetParam(int Index)
{
...
return *(Type*)&Bufor[WyliczPozycje(Index)];
}
Wywołanie wygląda tak:
- Kod: Zaznacz cały
int OczekiwanaZmienna = klasa->GetParam<int>(4);
Ale ja chciałbym napisać funkcję GetParam tak żeby wywołanie wyglądało następująco:
- Kod: Zaznacz cały
int OczekiwanaZmienna = klasa->GetParam(4);
Dodam, że moja klasa nie dość że wie pod jakim indexem w buforze ma szukać (WyliczPozycje) to wie jakiego typu jest ta zmienna.
Problem w tym, że ja nie wiem jak napisać funkcję która sama zmieniałaby swój typ (widząc na jaki).
W przykładzie chciałem żeby zwrócono mi zmienną pod indeksem 4. ale musiałem jeszcze dodatkowo podawać typ (int) tej zmiennej pomimo, że jest ona znana przez samą klasę! Chcę ten obowiązek zrzucić na klasę.
Jak to zrobić?




