0
想象我有一個類A,B & C均從A,B繼承」從B.C++調用子功能上父的矢量對象
乙繼承」具有一個成員變量,其是A的指針的矢量 我創建了一個名爲bP
的新B,並在其中存儲了一個新的C,名爲c
。 現在我想打電話給c.f()
,這個函數只適用於C類型。 我打電話給bP[0]->f()
。 我得到的錯誤是「f():不是'A'的成員」。 我可以從父對象的矢量調用子函數嗎?
想象我有一個類A,B & C均從A,B繼承」從B.C++調用子功能上父的矢量對象
乙繼承」具有一個成員變量,其是A的指針的矢量 我創建了一個名爲bP
的新B,並在其中存儲了一個新的C,名爲c
。 現在我想打電話給c.f()
,這個函數只適用於C類型。 我打電話給bP[0]->f()
。 我得到的錯誤是「f():不是'A'的成員」。 我可以從父對象的矢量調用子函數嗎?
I believe your code structure is something like this :
class A
{
};
class B: public A
{
};
class C: public A
{
};
class B': public B
{
public:
vector<A*> vec;
B(class C* c)
{
vec.push_back(c);
}
};
int main()
{
C *c = new C();
B'* b = B'(c);
C* c = static_cast<C*>(((b->vec).front())->f()); //Downcasting
return;
}
請提供[mcve];這樣我們不必「想象」,我們可以看看實際的代碼。 –
如果指針指向子對象,是的。你可以做'static_cast(bP [0]) - > f'。但是請下次嘗試包含一些代碼,這會讓您更容易理解您正在嘗試執行的操作。 –
George
什麼是B''?請提供代碼 – instance