当我有更多的课程时,我如何测试实例是否来自一个类?
class a {
};
class b inherits a {
};
class c inherits b {
};
a B = new b();
a C = new c();
assert ((B is instance_of b) == (C is instance_of b))
丑陋的黑客正在测试 B.className ==' b' 但' C' 是错误的。我找不到运营商。
答案 0 :(得分:3)
使用instanceof运算符:
class A {
}
class B inherits A {
}
class C inherits B {
}
A a();
B b();
C c();
printf("%y %y %y\n", a instanceof B, b instanceof B, c instanceof C);
打印:False True True
(上面的代码基于您的代码,但遵循Qore的标准naming conventions,并且还针对语法错误进行了更正)