pointer to member function

前端 未结 5 1999
醉梦人生
醉梦人生 2021-01-20 13:56

I am trying to generalize the functions filterX() and filterY() in the following class Table to function filter().

5条回答
  •  长发绾君心
    2021-01-20 14:38

    Here is how to do it by using pointer to member functions:

    // helper to avoid type nightmare;
    typedef string (Row::* GetterP)() const;
    
    class Table 
    { 
    public: 
        void add(string x, string y, int val); 
    
        // Define a templated function that can be called with GetX or GetY
        template 
        vector filter(string s)
        {
             int i = (d_table[i].*getter)(); // how to use getter in filter
        }
    
    private:
        vector d_table;  
    };
    
    // Usage:
    Table t;
    t.filter<&Row::GetX>("");
    

提交回复
热议问题