Prikaz jedne poruke
Stara 16.7.2014, 20:45   #8
Belphegor
V.I.P. Programiranje
 
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
Određen forumom Re: [C++] Unity sistem komponenti

Nisam stigao ranije da pogledam tvoj kod (implementacija bazirana na kodu Sergey Ryazanov-a ?).

Ovo mi nije jasno sta si radio?
Citat:
Kod:
template<typename R, typename... Args>
class Delegate<R(Args...)>
...

Iskasapio sam malo ovu Delegate klasu, gde drzim direktno pokazivac na metodu umesto fukcije, a i ne vidim zasto bi koristio void* ako imam tip objekta.
Kod:
template<typename T, typename R, typename... Args>
class Delegate
{
private:
    typedef T* t_pointer;
    typedef R(T::*t_method)(Args...);

    t_pointer m_object;
    t_method  m_pmethod;

public:

    Delegate(t_pointer obj, t_method m)
        : m_object(obj), m_pmethod(m)
    {}

    Delegate(const Delegate& Other) = default; // delete
    Delegate& operator=(const Delegate& Other) = delete;

    R operator()(Args&&... args)
    {
        return (m_object->*m_pmethod)(std::forward<Args>(args)...);
    }
};
...
SomeClass s;
    auto d = Delegate<SomeClass, void, int, double>(&s, &SomeClass::Fun);
Gde sam prvi put naleteo na jedan snag, ne razumem zasto mu treba copy konstruktor ako ga ne poziva nigde?
Belphegor je offline   Odgovor sa citatom ove poruke