
#include <stdio.h>

class base
{
public:
	virtual void virt_func( int ) const
	{
		puts( "This is base::virt_func." );
	}
};

class typo_name : public base
{
public:
	virtual void virt_fanc( int ) const
	{
		puts( "This is typo_name::virt_fanc." );
	}
};

class typo_name2 : public base
{
public:
        void virt_fanc( int ) const
        {
                puts( "This is typo_name::virt_fanc." );
        }
};

class typo_arg : public base
{
public:
        virtual void virt_func( long ) const
        {
                puts( "This is typo_arg::virt_func." );
        }
};

class typo_const : public base
{
public:
        virtual void virt_func( int )
        {
                puts( "This is typo_arg::virt_func." );
        }
};

void call_virt_func( base* p )
{
	p->virt_func( 0 );
}

int main ( int, char** )
{
	typo_name o1;
	typo_name2 o2;
	typo_arg o3;
	typo_const o4;

	call_virt_func( &o1 );
	call_virt_func( &o2 );
	call_virt_func( &o3 );
	call_virt_func( &o4 );

	return 0;
}


