-1
我无法从基类指针访问派生类函数。 她是我的代码从基类指针访问派生类函数时出错
#include<iostream>
class base
{
public:
void fun()
{
cout<<"Base class";
}
};
class der:public base
{
public:
void fun()
{
cout<<"Derived class";
}
};
int main()
{
clrscr();
base* pb;
//der d1;
//pb=&d1; uncommenting these lines and commenting the below line
//pb->fun(); also gives an error
static_cast<der*>(pb)->fun(); //error here ((der*)pb)->fun() works fine
return 0;
}
我所知道的是,如果u有从基类派生&假设你不必须创建许多派生类对象则u创建一个基类指针许多派生类。 从基类指针访问派生类函数是这里感兴趣的主题。我也听说基类指针是通用指针因此它可以保存派生类对象的地址。所以为什么我们不能直接做这个
der d1;
pb=&d1;
pb->fun();
派生类fun()应该被调用。
但它给编译时错误。为什么?
'der'不会'在你的代码base'派生。你需要'class der:public base'语法来代替'class der' – 2014-10-08 18:32:05
class der:public base – user3126632 2014-10-08 18:33:18
does not work still – user3126632 2014-10-08 18:36:03