我有兩個類C++一個多態對象
class A { C* c; }
class B { D* d; }
,找到我需要構造一個std ::向量,其元素爲A或B(與序列決定在運行時間內引用,所以我構造一個多態
class Poly {
int oType;
void* oPtr;
}
以及構造
Poly::Poly(int type)
{
if (type == 1) oPtr = new (A*) oPtr();
if (type == 2) oPtr = new (B*) oPtr();
oType = type;
}
具有類似結構的沿着
析構函數。現在
std::vector<Poly*> test;
的作品。但是,我無法訪問子對象。
我試圖
if (test->oType == 1) test->oPtr->a;
if (test->oType == 1) test->(A*)oPtr->a;
if (test->oType == 1) (A*)(test->oPtr)->a;
所有給我的編譯器錯誤:
「無效*」不是一個指針到對象類型
如何說服它的行的編譯器引用一個,如果我知道oPtr的類型是A *?
'如果(測試 - > oType == 1)((A *)測試 - > OPTR) - > C' – nwp 2014-09-02 15:33:57
爲什麼你使用'矢量'和'沒有向量'? –
nwp
2014-09-02 15:34:54
在C++中,多態性通常通過從一個公共基類繼承來表示。然後,通常嘗試使用虛擬方法而不是傳統的「if/then」結構來解決「對象類型選擇」問題。 – Galik 2014-09-02 15:37:26