Definicja w definicji funkcji
Ostatnio zmodyfikowano 2012-10-14 13:50
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 :) |
|
|
Mrovqa |
» 2012-09-27 19:23:37 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 :) |
|
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; }
|
|
Mrovqa |
» 2012-10-10 21:47:45 @crash Używanie struktur tak jak mówisz - niezbyt ma sens - trzeba więcej pisać. |
|
crash |
» 2012-10-11 18:32:45 Ale nie znowu jakoś dużo, a dodatkowe rozwiązanie zawsze warto znać |
|
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. |
|
crash |
» 2012-10-12 22:20:02 Podaj przykład z laski swojej kiedy to rozwiązanie jest niekorzystne ;> |
|
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 ;) |
|
1 « 2 » 3 |