Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Nie wymagany atrybut funkcji

Ostatnio zmodyfikowano 2013-10-29 15:12
Autor Wiadomość
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:

C/C++
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:

C/C++
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.
P-94464
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.
P-94465
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:

C/C++
typedef string( * RoundCase )( string, bool );

A jak dam:

C/C++
typedef string( * RoundCase )( string, bool = true );

To się skompilować nie chce.

Budowa funkcji roundcase:

C/C++
extern "C" string roundcase( string text, bool bigfirst = true ) {
    // kod
    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.
P-94467
Mrovqa
» 2013-10-24 20:03:24
P-94473
kubawal
» 2013-10-24 20:26:03
C/C++
extern "C" string roundcase( string text, bool bigfirst = true )
W C nie ma parametrów domyślnych.
P-94478
pekfos
» 2013-10-24 20:48:43
extern "C" nie oznacza, że kod jest w języku C.
P-94480
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
P-94524
pekfos
» 2013-10-25 17:04:31
No i co, że to do biblioteki .so?
P-94526
« 1 » 2
  Strona 1 z 2 Następna strona