假設我有4個類,B,C,D,E
從A
(抽象基類)繼承。 另外,我有一個A*
類型的容器(std::vector
),其內容指向 B,C,D,E
對象。 這裏有一些規則: 如果一個B
對象和一個C
對象相互作用,它們將從矢量中移除,並在它們的位置創建一個D
對象。多態性並獲取C++中的對象類型
此外,C + D = E
現在,假設我隨機選擇的所述向量內容之一;爲了實現交互機制,我該如何去了解哪個對象是哪種類型的?
注:我不希望使用typeid
運算符,動態轉換或標誌。其他解決方案?
下面是一些代碼
#include <iostream>
class A {
protected:
int v;
public:
A(){}
~A(){}
};
class B :public A {
public:
B(){}
~B(){}
};
class C : public A {
public:
C(){}
~C(){}
};
class D : public A {
public:
D(){}
~D(){}
};
class E : public A {
public:
E(){}
~E(){}
};
int main()
{
std::vector<A*> container;
return 0;
}
我將如何實現交互功能(S)?
而不是描述一些代碼,請嘗試創建一個[最小,完整,可驗證的示例]( http://stackoverflow.com/help/mcve)並向我們展示。 –
什麼是*「互動」*!?你知道的物品的位置如何在他們*「互動」*時被移除? – StoryTeller
關於「獲取對象類型」,這確實不是一個好主意,尤其是在C++中,它會創建運行時開銷。相反,使用虛擬功能來處理不同類別行爲的設計通常是一種方法。 –