我有两个类A
(基础)和B
(派生自A
):
class A { };
class B : public A
{
int data;
public:
int get_data() { return data; }
};
现在我有一个函数测试,它接受基类指针并调用派生类函数:
void test(A * ptr)
{
ptr->get_data();
}
但问题是ptr
可能指向A
' 对象或B
' 对象。如果它指向B
' 对象,则可以,但如果指向A
' 对象,则有问题。
此外,我不想get_data()
虚拟化,因为data
它不是A
' 对象的属性。
如何检查是否ptr
指向B
's 对象?我能想到的一种解决方案是dynamic_cast
检查它NULL
。这是最好的解决方案还是我可以有更好的解决方案?