c++ pointers to operators

后端 未结 1 1312
旧时难觅i
旧时难觅i 2021-02-14 03:31

I want to write a pointer in c++ (or in c++0x), that will points to a operator of a class lets say A or B. Is there any method to do it?

Of course there is a syntax like

1条回答
  •  时光说笑
    2021-02-14 04:20

    No, you can't do this. The class type is a part of the type of the operator member function.

    The type of A::operator()() is different from the type of B::operator()(). The former is of type int (A::*)() while the latter is of type int (B::*)(). Those types are entirely unrelated.

    The closest you can get is by using something like the C++0x polymorphic function wrapper function (found in C++0x, C++ TR1, and Boost) and by using bind to bind the member function pointer to a class instance:

    std::function _p;
    
    A a;
    _p = std::bind(&A::operator(), a);
    std::cout << _p();
    
    B b;
    _p = std::bind(&B::operator(), b);
    std::cout << _p();
    

    0 讨论(0)
提交回复
热议问题