指向具有可变参数编号的函数的指针
Pointer to a function with variable arguments number
我已经声明:
class aaa {
public:
static std::queue<QPair<void (*)( ... ), int> > m_commands;
static int bbb();
static void ccc(...);
};
在bbb()方法中,我写道:
int aaa::bbb() {
m_commands.push( qMakePair( aaa::ccc, 0 ) );
}
但它抱怨:
error C2664: 'void std::queue<_Ty>::push(QPair<T1,T2> &&)' : cannot convert parameter 1 from 'QPair<T1,T2>' to 'QPair<T1,T2> &&'
为什么?当我有这样的功能时:
void reg( void ( *invoker )( ... ), int args ) {
m_commands.push( qMakePair( invoker, args ) );
}
我可以很容易地通过这种方式向上面的函数发送一个静态函数:
reg( aaa::ccc, 0 );
qMakePair( aaa::ccc, 0 )
(可能)返回了一个类型为QPair<void (*)(), int>
的值,因为它不知道您想要QPair<void (*)( ... ), int>
类型的值。将其显式调用为所需函数指针类型的qMakePair<void (*)( ... ), int>( aaa::ccc, 0 )
或reinterpret_cast
aaa::ccc
。
更不用说这是(几乎可以肯定的)非法,因为aaa::ccc
没有正确的签名,无法通过您使用的函数指针类型调用。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- 为什么通过带有文字编号的引用调用会出现"无匹配函数"错误?
- 在C++代码中查找编号函数
- 为什么主函数不识别其他功能是否返回float类型编号
- 指向具有可变参数编号的函数的指针
- 使用函数和中点对c++中的Gusser进行编号
- 调用模板函数指针与可变参数编号