Witam serdecznie,
Czy można przekazać z jednej funkcji argumenty rożnego typu np int i string?
Przykładowo mam funkcję:
}```
i pozniej ja wywowalac:
string dane1, dane2;
int dane3;
wczytajdane(dane1, dane2, dane3);
pozdrawiam
Witam serdecznie,
Czy można przekazać z jednej funkcji argumenty rożnego typu np int i string?
Przykładowo mam funkcję:
}```
i pozniej ja wywowalac:
string dane1, dane2;
int dane3;
wczytajdane(dane1, dane2, dane3);
pozdrawiam
Można
void * to typ na dowolny wskaźnik, ale skądś potem trzeba wiedzieć czym są te dane czyli ponownie trzeba rzutować np. (char*).
Albo można zrobić strukturę, która będzie zawierać np. typ danych i ich referencje, a potem w funkcji odkodowywać po metadanych tak zbudowanych.
Ewentualnie można zrobić tak jak jest w funkcji printf pierwszy jest
printf(char*, void *a)
gdzie char* to string, i trzeba go sparsować, po czym wiadomo na co zrzutować tego voida.
Ewentualnie obiektowość zostaje, można stworzyć abstrakcyjny model vektora dla różnych typów danych, i przy określaniu elementu będzie automatycznie rzutowało na jego typ i zwracało go.
Ewentualnie można zrobić ogólny typ obiektu, który będzie tylko pośrednikiem do tłumaczenia prawie jak polimorfizm, ale danych, a nie metod.
Ewentualnie można tak jak jest zbudowane void **args, w sumie tak jest też w printf, tablica wskaźników dzięki temu można dać dowolną ilość argumentów, zmiennych, ale trzeba wiedzieć ile ich jest gdyż może program wyjść po za tablice i odczytać jakieś losowe dane.
Główny problem i tak jest z metadanymi gdyż one są tracone i trzeba je jakoś na nowo ustalić żeby wiedzieć czy te liczbę 65 traktować jako 65 czy może jako 'a' lub jeszcze coś innego.