0
我知道這個問題已經被問了很多,我用google搜索,但是不能把所有東西放在一起。也許是因爲這是不可能的,我想要什麼?對象,繼承,dynamic_cast需要建議
我
struct Universe
{
}
和
struct Atom: Universe
{
}
struct Molecule: Universe
{
}
Universe U;
Atom A;
Molecule M;
_atoms = vector<Universe*>(3);
_atoms.push_back(&U);
_atoms.push_back(dynamic_cast<Universe*>(&A));
_atoms.push_back(dynamic_cast<Universe*>(&M));
auto THIS_IS_ATOM = _atoms[1];
這個代碼是最有可能的錯誤在許多方面。但我的想法是像這樣存儲不同的派生結構,並稍後從數組或列表中訪問它們,而沒有任何dataloss或類被截斷。我想從數組中得到一些元素,比如_atoms [1],並且能夠知道這個結構是什麼類型(Universe或者Atom)和e.t.c。我應該如何在C++中正確地做到這一點?
你的'公共'關鍵字,它什麼也不做。 ('struct'默認爲'public')。你可能不應該建議人們創建一個'std :: vector'的原始指針 - 只需創建一個'std :: vector>'。 –
Yakk
@Yakk,感謝您提供默認情況下公開結構繼承的提示,我不知道這一點。據此編輯答案。關於智能指針,我原則上同意,但不想將看起來是初學者的OP與智能指針混淆。 +1指出這一點雖然。 –
非常感謝大家,我從這個例子中學到了很多東西,並且證實了很多。 Yakk,關於unique_pointer的好點,我最好習慣隨時使用它們。 – user2426290