如果从Base成员的指针到Derived类成员的指针的转换是有效的,为什么下面的代码编译失败
class Base
{
public:
virtual void fun1()
{
cout<<"fun1 in Base"<<endl;
}
};
class Der
{
public:
void fun1()
{
cout<<"fun1 in Der"<<endl;
}
};
int main()
{
void (Der::*funptr)() = &Base::fun1;
}
编译器给出一个错误说
错误:无法在初始化中将'void (Base:: )()' 转换为 'void (Der:: )()' |