struct pointer function points to other function of other struct

后端 未结 3 1605
天命终不由人
天命终不由人 2021-01-24 16:27

I was wondering if is possible to point a function of other structure into of a structure:

Example:

typedef struct
{
    int func(int z)
    {
        r         


        
3条回答
  •  抹茶落季
    2021-01-24 17:09

    The correct syntax for a pointer to method is:

    &T::f
    

    Where T is a type declaring a method f. Note that to be called, the pointer must be bound to an instance of T, because the value of the pointer represents an offset to the beginning of an instance in memory.

    In C++14, you may consider std::function:

    #include 
    
    struct sta
    {
        int func(int z)
        {
            return z * 2;
        }
    };
    
    struct stah
    {
        std::function func;
    };
    
    
    int main()
    {
        sta sa;
        stah sah;
    
        sah.func = std::bind(&sta::func, &sa, std::placeholders::_1);
    
        return 0;
    }
    

    You can also use lambdas instead of std::bind:

    int main()
    {
        sta sa;
        stah sah;
    
        sah.func = [&sa](int z) { return sa.func(z); };
    
        return 0;
    }
    

    See std::function, std::bind, and std::placeholders on cppreference.com.

提交回复
热议问题