我试图使用智能指针实例调用类的成员函数。传递的是该函数的地址,我想通过相应类的智能指针实例来调用它。我已经尝试过以下方法:
代码片段如下:
(registerList.*setRegister)();
但是它会出现错误:
no match for ‘operator->*
Register
类成员函数:
uint16_t Registers::getSP()
{
return this->sp;
}
代码片段如下:
std::unique_ptr<Registers> registerList;
SetRegisteropcodeLdWordRegister(&Registers::getSP)
void opcodeLdWordRegister(uint16_t (*Registers::setRegister)())
{
(registerList.*setRegister)();
}
*registerList
吧? - Evgstd::invoke
会为我们启动星号。 - Evgstd::invoke
的重点在于统一调用语法。在这种情况下,它的含义是:"如果t1
不满足前面的条件,则INVOKE(f, t1, t2, ..., tN)
等同于((*t1).*f)(t2, ..., tN)
。" - Caleth