c ++定义成员函数指针而不知道对象的类型

时间:2013-06-02 19:58:27

标签: c++ pointers

我知道标题不是很清楚,但我不知道如何用一句话写下来。所以问题是我想要这样的东西:

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

我知道这不会起作用,但是我在徘徊是否在c ++中存在这个问题的解决方案?

更新

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)
    {
    }
}

错误:

错误C2440:'newline':无法从'MainPage *'转换为'std :: remove_reference&lt; _Ty&gt; *'

错误C2647:'。*':无法在'MainPage'上取消引用'void(__thiscall std :: remove_reference&lt; _Ty&gt; :: *)(int,int)'

1 个答案:

答案 0 :(得分:6)

是的,请使用decltype

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