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

Definicja w definicji funkcji

Ostatnio zmodyfikowano 2012-10-14 13:50
Autor Wiadomość
m4tx
» 2012-09-27 14:08:27
Gdzie tu jest zachowana zgodność C++ z C? :/
Od tego masz
extern "C"
. Zresztą:
Ty jeden na ilu użytkowników tego forum? Mam rację - mało kto tego używa :)
P-65628
Mrovqa
» 2012-09-27 19:23:37
Od tego masz
extern "C"
.
Myślisz, że nie próbowałem? Taki extern - no niestety - w tym przypadku nic nie zmienia.

Ty jeden na ilu użytkowników tego forum? Mam rację - mało kto tego używa :)
yyy... ktoś tu mówił, że tego używa? Ja tylko pisałem, że coś takiego jest możliwe.

@DejaVu
Ja tu miałem na myśli głównie stare biblioteki napisane w C - niewykluczone, iż niektóre korzystają właśnie z tego rozwiązania :)
P-65636
crash
» 2012-10-10 12:08:13
Siema, pierwszy post :)

Funkcja w funkcji, to funkcja wewnętrzna. Na taką kombinację pozwala Delphi, C++ nie bardzo, ale można to obejść na co najmniej dwa sposoby. Pierwszy to wymienione wyrażenie lambda, drugi sposób to struktura/klasa wewnątrz definicji funkcji. Struktura/klasa ma swoje metody, kiedy więc wyprowadzając zmienną tegoż nowego typu mamy dostęp do metod (o ile są publiczne) przez operator . lub -> .Przykład:


#include <iostream>

using namespace std;

int main()
{
    struct
    {
        void wewnetrzna()
        {
            cout << "\ninside.wewnetrzna()";
        }

    }inside;

    inside.wewnetrzna();
    return 0;
}
P-66554
Mrovqa
» 2012-10-10 21:47:45
@crash
Używanie struktur tak jak mówisz - niezbyt ma sens - trzeba więcej pisać.
P-66594
crash
» 2012-10-11 18:32:45
Ale nie znowu jakoś dużo, a dodatkowe rozwiązanie zawsze warto znać
P-66641
DejaVu
» 2012-10-11 20:48:19
Tyle, że to nie jest funkcja lecz metoda, co definitywnie zmienia postać rzeczy w sytuacjach w których musisz się posłużyć adresem na funkcję, np. przy tworzeniu wątku.
P-66654
crash
» 2012-10-12 22:20:02
Podaj przykład z laski swojej kiedy to rozwiązanie jest niekorzystne ;>
P-66708
DejaVu
» 2012-10-12 22:25:20
@up: podałem Ci kiedy nie zadziała :) Przynajmniej dla kodu, który zademonstrowałeś. Inny przykład: w WinAPI jest coś takiego jak funkcja przetwarzająca komunikaty. Adres funkcji należy przekazać do struktury WNDCLASSEX, a to z kolei zakończy się niepowodzeniem jeżeli metoda w klasie nie będzie statyczna. Aby odwołać się do metody statycznej konieczna jest nazwa klasy, a więc tu Twój koncept polega na polu chwały ;)
P-66710
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona