i design a class an base pointer is created but it give error when i try to acces a derived function through base pointer :   i create base pointer and pass address of dervied object to it..but an error displayed when i tried to acces a function names fun() through that pointer.. why this code gives error?help me plz

    #include<iostream>
    using namespace std;
    class Base
    {
    public:
    virtual void fun ()
    {
    cout << "Base::fun()"<< endl;
    }
    };

    class Derived : public Base
    {
    public:
    virtual void fun ( int x )
    {
    cout << "Derived::fun(), x = " << x << endl;
    }
    };

    int main()
    {
    Derived d1;
    Base *bp = &d1;
    bp->fun(5);
    return 0;
    }