我有两个类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。这是最好的解决方案还是我可以有更好的解决方案?