[C++] jak zdefiniować zagnieżdżoną funkcję

Ser Cubus
Użytkownik
Użytkownik
Posty: 1406
Rejestracja: 6 maja 2012, o 22:46
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 107 razy
Pomógł: 145 razy

[C++] jak zdefiniować zagnieżdżoną funkcję

Post autor: Ser Cubus »

hej, jak zdefiniować f_B() ?

Kod: Zaznacz cały

class CKlasa
{ ...
  void f_A();
};

void CKlasa::f_A()  // definicja f_A();
{
 ...
void f_B();
}
jak teraz zdefiniować f_B()?
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[C++] jak zdefiniować zagnieżdżoną funkcję

Post autor: royas »

W C++ nie ma funkcji zagnieżdżonych w funkcji. Definiujesz normalnie na podstawowym poziomie.

Kod: Zaznacz cały

...
void CKlasa::f_A()  // definicja f_A();
{
 ...
void f_B();
}

void f_B () {
};
Ser Cubus
Użytkownik
Użytkownik
Posty: 1406
Rejestracja: 6 maja 2012, o 22:46
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 107 razy
Pomógł: 145 razy

[C++] jak zdefiniować zagnieżdżoną funkcję

Post autor: Ser Cubus »

heh, jednak c++ nie jest taki doskonały ^ ^, dzieki
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[C++] jak zdefiniować zagnieżdżoną funkcję

Post autor: royas »

To jest problem "coś za coś".
Właściwie jedyna ważna zaleta zagnieżdżanych funkcji to dostęp z funkcji zagnieżdżonej do zmiennych lokalnych funkcji nadrzędnej.

Taki przykład

Kod: Zaznacz cały

extern void f(void (*)());
int h()
{
    int x;
    void g() { ++ x; }
    g();
    f(g);
}
Wywołanie funkcji g musi wiedzieć w którym wywołaniu funkcji h ma modyfikować x.
Funkcja f jest kompilowana niezależnie. Wywołując w funkcji f jej parametr, czyli np. funkcję g nie wiadomo, że trzeba i jak można, przekazać funkcji g jakieś powiązanie do odpowiedniego wywołania funkcji h.
Ser Cubus
Użytkownik
Użytkownik
Posty: 1406
Rejestracja: 6 maja 2012, o 22:46
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 107 razy
Pomógł: 145 razy

[C++] jak zdefiniować zagnieżdżoną funkcję

Post autor: Ser Cubus »

jakby ktoś miał podobny problem do mojego to polecam poczytać o funkcji anonimowej (lambda) ze standardu c++11
ODPOWIEDZ