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

Wskaźnik na metodę nieznanego obiektu

Ostatnio zmodyfikowano 2016-02-24 21:33
Autor Wiadomość
marcolo2307
Temat założony przez niniejszego użytkownika
Wskaźnik na metodę nieznanego obiektu
» 2016-02-24 16:04:47
Cześć!

Chciałbym stworzyć funkcję, która może przyjmować funkcje i metody jako argumenty. Potrafię przyjąć funkcję, ale nie wiem jak stworzyć wskaźnik na metodę obiektu, którego nazwy nie znam.
Chodzi mi o taki efekt, jaki jest w std::thread. Mogę tam podać albo funkcję, albo metodę i obiekt.

C/C++
template < class Fn, class...Args >
explicit thread( Fn && fn, Args &&...args );

Tak wygląda konstruktor std::thread, ale nie rozumiem fragmentów "class... Args" i "Args&&... args". W dodatku chciałbym użyć tej funkcji w DLL'ce, gdzie korzystam z extern "C", tak więc nie mogę tam użyć template.

Proszę o jakiś przykład i wyjaśnienie konstruktora std::thread.
P-145254
pekfos
» 2016-02-24 16:24:37
P-145255
marcolo2307
Temat założony przez niniejszego użytkownika
» 2016-02-24 16:31:55
Wciąż nie rozumiem :/
P-145257
j23
» 2016-02-24 18:26:50
(...) ale nie rozumiem fragmentów "class... Args" i "Args&&... args".
Poczytaj sobie o szablonach wariadycznych.
P-145260
marcolo2307
Temat założony przez niniejszego użytkownika
» 2016-02-24 19:22:39
Dzięki j23, już rozumiem o co chodzi. Ale z tego chyba wynika, że nie mogę stworzyć czegoś takiego jak std::thread w DLL, gdzie nie ma szablonów, prawda?
P-145261
j23
» 2016-02-24 20:08:38
W takiej formie, jak jest w std::thread, nie da rady. Możesz spróbować użyć obiektów funkcyjnych.


PS. do czego to ma być?
P-145264
pekfos
» 2016-02-24 20:10:22
Ale z tego chyba wynika, że nie mogę stworzyć czegoś takiego jak std::thread w DLL, gdzie nie ma szablonów, prawda?
W dodatku chciałbym użyć tej funkcji w DLL'ce
Chcesz tego użyć w DLL, czy to eksportować z DLL?
P-145266
marcolo2307
Temat założony przez niniejszego użytkownika
» 2016-02-24 21:00:22
Eksportować. Chciałem zrobić menu, do którego można dodawać przyciski na zasadzie addButton(nazwa, funkcja/metoda).
P-145267
« 1 » 2
  Strona 1 z 2 Następna strona