从基类指针访问派生类函数时出错
Error in accessing derived class function from base class pointer
我无法从基类指针访问派生类函数。她是我的代码
#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;
}
我所知道的是,如果你有许多派生类是从基类派生的&假设你不必创建那么多派生类对象,那么你就创建了一个基类指针。从基类指针访问派生类函数是本文感兴趣的主题。我还听说基类指针是通用指针 应该调用派生类fun()。 但它给出了一个编译时错误。为什么?der d1;
pb=&d1;
pb->fun();
使基类fun()
函数virtual
试试这个:
using namespace std;
#include<iostream>
class base
{
public:
virtual void fun()
{
cout<<"Base class";
}
};
class der :public base
{
public:
void fun()
{
cout<<"Derived class";
}
};
int main()
{
base* pb=new der();
pb->fun();
return 0;
}
相关文章:
- 如何通过派生类函数更改基类中的向量
- 库函数需要一个 std::function<void(void)>,如何传入类函数?
- 用pybind11包装C++抽象类时出错
- 在类函数中初始化外部作用域变量
- c++ 在非类函数中使用类变量
- SDL_PollEvent() 无法捕获类函数内部SDL_QUIT?
- 从类成员函数到类 C 函数指针的转换
- C++迭代器:实现迭代器类时出错
- 如何在模板类函数中分配结构值?
- 有没有办法将重载的类函数绑定到函数对象?
- 类中私有结构的构造函数出错
- 我的类默认构造函数出错
- 尝试在<int>构造函数中使用 vector 启动类时出错
- 线程调用类函数时出错
- 从基类指针访问派生类函数时出错
- 调用类的函数出错
- 使用类函数创建线程时出错
- 将类对象从main传递到类函数时出错
- 通过包装对象上的函数指针调用类方法出错
- 使用Boost传递类函数时出错