所以我想測試我的物體是魔藥還是武器。我如何用typeid(即任何其他方法)做到這一點?如何使用typeid檢查您的對象是哪個派生類?
然後我想基於這個條件實例化一個對象。我不能只說T temp,因爲它會實例化一個抽象基類(即我的Item類中有一個純虛函數)。
template <typename T>
void List<T>::Load(std::ifstream & file)
{
//Read the number of elements
file.read(reinterpret_cast<char *>(&mNumberOfNodes), sizeof(int));
//Insert nodes into list
//If object is a potion
//T * temp = new Potion;
//If object is a weapon
//T * temp = new Weapon;
for(int i = 0; i < mNumberOfNodes; i++)
{
temp->Load(file);
this->PushFront(&temp);
mNumberOfNodes--;
mNumberOfNodes--;
}
}
你看過[工廠模式](http://www.oodesign.com/factory-pattern.html)嗎? –
哈!我希望我有。明年我會採用軟件設計模式,但我會盡力去理解這篇文章。 ( – MrPickle5
dynamic_cast is one way。 –