definicja funkcji

  • Rejestracja: dni
  • Ostatnio: dni
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: dni
  • Ostatnio: dni
  • 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: dni
  • Ostatnio: dni
0
  1. void to nie funkcja tylko procedura (to tak na przyszłośc - funkcja zwraca jakas wartośc na pomocą return)
    [..ciach..]
  • Rejestracja: dni
  • Ostatnio: dni
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
  • Rejestracja: dni
  • Ostatnio: dni
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.

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.