原因是通过地址调用了已知地址的函数,但是没有指定函数类型。
通过地址转化为合适的函数指针来调用他。
解决方法1:
定义函数指针类型typedef void (*func_t)(void);
cout << "调用第1个虚函数: ";
func_t fun = (func_t)* (vptr + 0);
fun();
解决方法2:
定义函数指针类型typedef void (*func_t)(void);
然后进行函数指针类型强制转化,即可调用成功。
((func_t) * (vptr + 0))();
解决通过地址调用未知函数问题的方法,
文章讲述了在C++中遇到通过地址调用已知函数但未指定类型的场景,提供了两种解决方案:一是定义函数指针类型并将其指向变量转换为相应类型;二是直接进行函数指针类型强制转化。
731





