Czy istnieje sposób na wywołanie funkcji składowej bez. * Lub -> * operatora

Poniżej sposób dzwonieniaD::foo funkcja poprzez funkcję wskaźnik do członka wygeneruje błąd:nakaz uzycia.* lub->* wywołać funkcję wskaźnik do członka w 'f (...)' .. oczywiście nie tak nazywamy funkcje wskaźnika do członka.

Właściwy sposób dzwonienia to(d.*f)(5); LUB(p->*f)(5);

Moje pytanie brzmi: „Czy istnieje sposób na wywołanie funkcji członka klasy bez obiektu klasy po lewej stronie? Zastanawiam się, czy moglibyśmy przekazać obiekt klasy (this) jako regularny argument?

Moim zdaniem na koniec dnia (na poziomie zespołu / binarnym) wszystkie funkcje składowe klasy są normalnymi funkcjami, które powinny działać na n + 1 argumentach, gdzie (+1 jest zathis)

Jeśli o tym porozmawiamyD::foo funkcja poniżej, na poziomie zespołu / binarnym powinna działać na dwóch argumentach:

Sam obiekt klasy (wywołanie wskaźnika do obiektu klasy D)this)iint.

więc jest sposób (lub hack) na wywołanieD::foo z obiektem klasy przekazanym do niego jako argument funkcji zamiast użycia. or -> or .* or ->* operatory na obiekcie klasy?

Przykładowy kod:

#include <iostream>
using namespace std;

class D {
    public:
        void foo ( int a ) {
            cout << "D" << endl;
        }

        int data;
};


//typedef void  __cdecl ( D::*  Func)(int);
typedef void ( D::*  Func)(int);

int main ( void ) 
{
    D d;

    Func f = &D::foo;
    f(&d, 5);

    return 1;
 }

Jedną z metod jest użycie wiązania zwiększającego, tj

(boost:: bind (&D::foo, &d, 5)) ();

EDYCJA: „Proszę pamiętać, że nie szukam wersji tego programu, który działa, wiem, jak to zrobić”

questionAnswers(11)

yourAnswerToTheQuestion