class a //my base abstract class
{
public:
virtual void foo() = 0;
};
class b : public a //my child class with new member object
{
public:
void foo()
{}
int obj;
};
int main()
{
b bee;
a * ptr = &bee;
ptr->obj; //ERROR: class a has no member named "obj"
}
我的问题是,当我有指向基类(“a”)的指针指向子类(“b”)时,如何访问“obj”成员“)对象?我知道铸造应该做到这一点,但我正在寻找更好的解决方案。使用指针指向基类抽象类的子类成员
有些上下文会有所帮助。你为什么要那样做?如果转换不是选项,则必须在派生类中有一个虚拟函数重写,该重写返回一个引用或指向该成员的指针。但是,这通常会破坏封装。这将我们带回到为什么要通过指向基类的指针访问派生类成员? – Void 2013-02-11 20:50:59
@虚构你可能是对的,我应该改变设计。 – user1873947 2013-02-11 20:53:01