DalekSupreme
DalekSupreme

Reputation: 1513

c++ defining a member-function pointer without knowing the type of the object

I know that the title is not very clear but I didn't know how to write it down in one sentence. So the problem is that I want something like this:

void(typeof(this)::*function)(int,int);

I know that is not going to work but I was wandering whether a solution exists for this problem in c++ or not?

Update:

class MainPage
{
    public:
    MainPage()
    {
        void (std::remove_reference<decltype(*this)>::*callback)(int, int) = &MainPage::myFunction;
        ((*this).*callback)(nullptr,nullptr);
    }
    ~MainPage()
    {

    }

    void myFunction(int a, int b)
    {
    }
}

Errors:

error C2440: 'newline' : cannot convert from 'MainPage *' to 'std::remove_reference<_Ty> *'

error C2647: '.*' : cannot dereference a 'void (__thiscall std::remove_reference<_Ty>::* )(int,int)' on a 'MainPage'

Upvotes: 4

Views: 470

Answers (1)

David G
David G

Reputation: 96800

Yes, use decltype:

void (std::remove_reference<decltype(*this)>::type::*function)(int, int);

Upvotes: 6

Related Questions