definicja funkcji

definicja funkcji
0

Jakiego typu ma być argument funkcji, aby do niego można było przekazać parę zmiennych różnych typów:
Chodzi o coś takiego:

Kopiuj
void funkcja(???? x)
{
if(x jest typu int) to cośtam...
else if(x jest typu unsigned int) to cośinnego...
else if(x jest typu char) to znowu cośtam...
itd.
}

Nie wiem co dać w nawiasie aby za argument x można było podstawić zmienną typu np. char bądź int bądź string. I jak potem w samej już funkcji sprawdzać jaki typ argumentu jest???

MA
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 16 lat
  • Postów:501
0
Kopiuj
void funkcja(int zuo) 
{
  std::cout << "int " << zuo << '\n';
}
void funkcja(const std::string& zuezuo) 
{ 
  std::cout << "string " << zuezuo << '\n';
}
M6
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 9 lat
0
  1. void to nie funkcja tylko procedura (to tak na przyszłośc - funkcja zwraca jakas wartośc na pomocą return)
    [..ciach..]
0
Matijas6113 napisał(a)
  1. void to nie funkcja tylko procedura (to tak na przyszłośc - funkcja zwraca jakas wartośc na pomocą return)

C++ to nie pascal, tutaj nie istnieje pojęcie procedury... poza tym co powiesz na:

Kopiuj
void fun1() {}
void fun2() { return fun1(); }

Poza tym taka konwencja nazw jaką zastosowałeś jest totalnie niespotykana...

Użycie struktur jest zaś delikatnie mówiąc nie na miejscu, nie ma związku z problemem. Tak jak napisał manfredek - przeciążanie funkcji lub ew. funkcja szablonowa ze specjalizacją. Noo.. ew. można się posłużyć boost::any lub boost::variant, wtedy faktycznie można to oifować.

MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:mniej niż minuta
0

Nie ma to jak jałowe spory w kwestii semantyki.

@TOPIC:
sprecyzuj jakie i jak będziesz dostarczał dane do tej funkcji/procedury i czy będziesz wywoływał ją normalnie czy może przez pośrednictwo jakiegoś wskaźnika.
poza przeładowaniem funkcji (rozwiązanie powyżej), można zastosować inne sztuczki.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.