如何在运行时检查C++抽象方法是否已定义
class ABase{
public:
virtual void do1() = 0;
};
class BBase: public ABase{
public:
virtual void do1(){}
};
class CBase: public ABase{
public:
};
ABase * base = rand() % 2 ? new BBase() : new CBase();
if(&(base->do1) != 0)
base->do1();
这会导致错误。
谢谢, Max
virtual
只是一个错别字或者过去式,你说的是运行时错误吗?还是在那个有趣(而且错误)的比较中出现了编译错误?如果是这样,是哪些错误?这样的问题太草率了,无法得到合理的答案。我投票关闭它,因为它不能被合理地回答。 - sbi&base->do1
那样获取成员函数的地址,你只能使用&ABase::do1
,但编写代码来尝试做问题所要求的事情的整个前提是错误的。我认为即使答案必须引出问题,这个问题也可以被“回答”。 - CB Bailey