例如,我有以下抽象类:
class aClass
{
public:
static int check();
virtual int check_deep()=0;
}
我想调用check_deep()表单check()
提前谢谢, 朱迪思。答案 0 :(得分:2)
您需要更改静态方法的签名以接收aClass
实例的引用(或指针)来执行此操作:
class aClass
{
public:
static int check(aClass& instance);
virtual int check_deep()=0;
}
int aClass::check(aClass& instance)
{
return aClass.check_deep();
}
设计 smells 尽管如此!
答案 1 :(得分:0)
没有。它没有意义,因为非静态方法绑定到类的实例(您引用为this
),而静态方法没有绑定到任何实例:没有{{ 1}}将this
绑定到check_deep
。
显然,假设您将从子类调用它,否则check
是纯虚拟的,您将无法调用它。
答案 2 :(得分:0)
无法做到这一点。非静态方法需要一个对象作用,在你的情况下,当它是纯虚拟时,对象甚至决定调用哪个确切的方法。你绝对需要一个aClass类型的对象来调用check_deep。