Wskaźnik do funkcji w sekcji prywatnej klasy, jak się do niego dobrać.

0

Witam,
mam mały problem z uzyskaniem wskaźnika do funkcji która znajduje się w sekcji prywatnej klasy. Próbowałem różnych kombinacji, ale za każdym razem dostaję błąd (argument does not match). Próby były z nazwą tylko samej funkcji, jak i z dodaniem Test:: i ze znacznikami * o raz &
Klasa przykładowa wygląda tak:

 
#include <iostream>

using namespace std;

class Test {
    public:
        Test() {
            void (*foo)(void);
            foo = example;   // miejsce uzyskania i bledu zarazem 
        }
    private:  
        void example(void) { cout << "example()" << endl;  }
};

int main() {
    Test test;

    return 0;
}

Każdemu kto pomoże w tej rozkminie, serdecznie dziękuję :)

1

Wskaźnik na niestatycznego członka klasy musi być zapisany w sposób to ukazujący. W Twoim przypadku

void(Test::*)()
1
class Test {
    public:
        Test() {
            // wymaga #include <functional>
            typedef std::function<void()> FooPtr;
            FooPtr ptr = std::bind(&Test::example, this);
            ptr();

            //lub
            typedef void (Test::*FooPtr2)();
            FooPtr2 ptr2 = &Test::example;
            (this->*ptr2)();

        }

    private:
        void example(void) { cout << "example()" << endl;  }
};

1 użytkowników online, w tym zalogowanych: 0, gości: 1