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