4

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

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:“换行符”:无法从“MainPage *”转换为“std::remove_reference<_Ty> *”

错误 C2647: '.*' : 无法取消引用 'MainPage' 上的 'void (__thiscall std::remove_reference<_Ty>::* )(int,int)'

4

1 回答 1

6

是的,使用decltype

void (std::remove_reference<decltype(*this)>::type::*function)(int, int);
于 2013-06-02T20:00:24.490 回答