[C++] Nie wymagany atrybut funkcji
Ostatnio zmodyfikowano 2013-10-29 15:12
Narzew Temat założony przez niniejszego użytkownika |
[C++] Nie wymagany atrybut funkcji » 2013-10-24 18:59:07 Witam. Czy jest w C++ możliwość zrobienia atrybutu w funkcji, który nie jest wymagany do działania funkcji, a podany zmienia przebieg funkcji ?
Coś na wzór:
int zwroc_liczbe( int liczba, bool dodaj ) { if( dodaj == true ) { int zwroc = liczba + 1; return zwroc; } else { return liczba; } }
Chodzi o to że, gdy nie podam w wywołaniu atrybutu dodaj np. zwroc_liczbe(10) to po prostu jego miejsce to będzie false albo NULL. Jest taka możliwość?
Czy jest możliwość wybrania typu zwracanej wartości w zamian od tego atrybutu ?
Coś na wzór:
int zwroc_liczbe( bool co ) { if( co == true ) { int liczba = 5; return liczba; } else { double liczba = 5.57; return liczba; } }
Prosiłbym o doradę. Wiem że to jest możliwe w skryptowych językach jak np. Ruby. |
|
kubawal |
» 2013-10-24 19:01:37 void funkcja( typ nazwa_atrybutu = wartosc_domyslna ) Np. void funkcja( int costam = 0 ) Takich atrybutów może być dowolna ilość, ale muszą być zawsze na końcu. |
|
Narzew Temat założony przez niniejszego użytkownika |
Nie wymagany atrybut funkcji » 2013-10-24 19:54:03 Da się kombinować z tymi zwracanymi typami ? Jak próbuje taką metodę umieścic w bibliotece .so to mam błąd, że za mało argumentów jak zdefiniuje: typedef string( * RoundCase )( string, bool );
A jak dam: typedef string( * RoundCase )( string, bool = true );
To się skompilować nie chce. Budowa funkcji roundcase: extern "C" string roundcase( string text, bool bigfirst = true ) { return result; }
Wyniki: roundcase(tekst,true) => działa roundcase(tekst,false) => działa roundcase(tekst) => nie działa (too few arguments) Chodzi mi o to, jak już wspominałem by atrybut (w tym przypadku bigfirst) był opcjonalny. |
|
Mrovqa |
» 2013-10-24 20:03:24 |
|
kubawal |
» 2013-10-24 20:26:03 extern "C" string roundcase( string text, bool bigfirst = true )
|
W C nie ma parametrów domyślnych. |
|
pekfos |
» 2013-10-24 20:48:43 extern "C" nie oznacza, że kod jest w języku C. |
|
kubawal |
» 2013-10-25 16:58:40 Ale napisał, że to jest w bibliotece .so, więc w tym kontekście owszem, znaczy. próbuje taką metodę umieścic w bibliotece .so |
|
|
pekfos |
» 2013-10-25 17:04:31 No i co, że to do biblioteki .so? |
|
« 1 » 2 |