例如我有:
class A{
public:
virtual void run(){...}
};
class B:public A {
public: void run(){...}
};
A* ptr= new B();
我只有一个指针' ptr'。我知道指针是类型' A *'但我不知道它是否指向班级的对象' A'或者' B'或其他一些课程' X'这是从A类派生出来的,并且还实现了函数'运行'(在我的例子中,我的对象是类型' B')。我怎么能得到函数的地址'运行& #39;这是在我的对象的类中实现的吗?
答案 0 :(得分:1)
听起来像你想要的dynamic_cast
。
您可以dynamic_cast
到各种派生类类型,并测试是否获得有效指针或nullptr
。这将允许您确定基类指针指向的对象的动态类型。
答案 1 :(得分:0)
据我了解,没有可行的方法。 选项:
void f(A *object) {
object->run();
}
并使用其地址而不是实际运行函数的地址?
顺便问一下,你在找什么?指向成员函数的指针?实现的指针?只是一些地址?