指向deque <int> :: push_back的指针

har*_*nds 6 c++ pointers function-pointers

#include <iostream>
#include <deque>

using namespace std;
main()
{
    typedef void (deque<int>::*func_ptr)(int);
    func_ptr fptr = &deque<int>::push_back;
}
Run Code Online (Sandbox Code Playgroud)

我试图获得指向此函数的指针,但我得到一个编译错误

error: cannot convert ‘void (std::deque<int>::*)(const value_type&) {aka void (std::deque<int>::*)(const int&)}’ to ‘func_ptr {aka void (std::deque<int>::*)(int)}’ in initialization
     func_ptr fptr = &deque<int>::push_back;
Run Code Online (Sandbox Code Playgroud)

我想这样做,以便我可以根据不同的条件获得指向不同成员函数的指针.

我提到了这个链接.

Sam*_*hik 1

push_back()接受一个const T &参数,如错误消息所示:

\n\n
\n

无法转换 \xe2\x80\x98void (std::deque::*)(const value_type&) ...

\n
\n\n

将类型别名更改为:

\n\n
typedef void (deque<int>::*func_ptr)(const int &);\n
Run Code Online (Sandbox Code Playgroud)\n

  • @LightnessRacesinOrbit - 此处使用“auto”将出现编译错误,因为该函数已重载,并且 auto 不知道哪个重载与给定的函数名称关联。 (2认同)