下面是我的C ++代码,我在下面的代码中评论我的问题:
#include <iostream>
using namespace std;
class Base{
public:
virtual void f1(){
cout << "f1 from base\n"; }
virtual void f2(){
cout << "f2 from base\n";
}
};
class D1: public Base {
public:
virtual void f1(){
cout << "f1 from D1\n";
}
};
class D2: public Base {
public:
virtual void f2(){
cout << "f2 from D2\n";
}
};
int main(){
Base* b1 = new D1;
b1->f1();
b1->f2();
delete b1;
Base* b2 = new D2;
b2->f1();
b2->f2();
Base** ptr = &b2;
// here how to use member function
// of b2
return 0;
}
我想通过f1()
指针访问D1
类的ptr
函数。
我已声明Base**
并为其指定了b2
。其中b2
是Base*
类的指针。
答案 0 :(得分:3)
你必须尊重Base**
一次,这样你就可以通过指针基类调用该函数。
一种可能的方法是写
(*ptr)->f1();