分配指针方法我有这样两类:无法从继承
class IBaseA
{
public:
virtual bool sayHello(std::string&) = 0;
~IBaseA(){}
};
class BaseA: public IBaseA
{
public:
virtual bool sayHello(std::string &str)
{
std::cout << "Hello " << str << std::endl;
return (true);
}
BaseA(){}
};
你能解释我为什么我不能做这样的事情
bool (IBaseA::*ptr)(std::string&) = &BaseA::sayHello;
error: cannot convert 'bool (BaseA::)(std::string&) {aka bool (BaseA::)(std::basic_string&)}' to 'bool (IBaseA::)(std::string&) {aka bool (IBaseA::)(std::basic_string&)}' in initialization
我不明白为什么我不能做这样的事情。
但是,如果我改变分配
bool (IBaseA::*ptr)(std::string&) = &IBaseA::sayHello;
然后我可以使用这个指针没有任何问题
BaseA A;
(A.*ptr)(str);
编辑: 谢谢你的答案,我在想,因为所有的地址在vtable中,根据我从wikipedia中了解的内容,它们是相同的位置。
输入错误的最后一句:不是'BaseA'的所有成员都出现在'IBaseA' – yuan
@yuan谢谢,修正。 – Angew