此问题已在此处有答案:
Calling C++ member functions via a function pointer(10个答案)
7天前关闭
我有这个类,我试图从我的类指针的指针提取x1函数
class myclass
{
public:
myclass();
~myclass();
int x = 0;
int x1();
private:
};
int myclass::x1()
{
return 100;
}
像这样
myclass* ptr = new myclass[10];
for (int i = 0; i < 10; i++)
ptr[i].x = i*11;
for (int i = 0; i < 10; i++)
{
std::cout << ((ptr + i)->x) << std::endl;
void *v = (void *)((ptr + i)->x);
typedef int (*fptr)()=//what I need to do to v to get x1 function and call it;
}
我能做这个吗?这在C++中是允许的。我正在使用VS2019
2条答案
按热度按时间fhg3lkii1#
可以使用***成员函数指针***。语法如下:
更现代的方法是:
注意,必须在成员函数中为
this
提供一个对象。只有静态成员函数可以直接调用而不需要绑定到对象。你可以参考我的previous answer来了解更多。
wfauudbj2#
在C++中,不能通过指向成员变量的指针直接访问成员函数。要访问和调用类的x1函数,需要有一个指向myclass示例的指针,而不仅仅是指向成员变量的指针。