我有一個類Character
,它從基類CollidableObject
繼承。您可能已經猜到,CollidableObject
具有檢測其他CollidableObject
之間的衝突的方法,例如CircleCollidableObject
和SquareCollidableObject
。C++ - 通過智能指針派生類
bool CollidableObject::collidesWith(std::shared_ptr<CollidableObject> &pCollidable)
{
...
}
我用它來運行其他檢查,並最終處理碰撞。基本上我希望能夠遍歷我遊戲中的角色,傳遞兩個Character
(即再次從CollidableObject
繼承),並檢測到任何衝突。
void CharacterManager::collisions()
{
for(std::vector<std::shared_ptr<Character>>::iterator i = mCharacters_.begin(); i != mCharacters_.end(); i++) {
for(std::vector<std::shared_ptr<Character>>::iterator j = mCharacters_.begin(); j != mCharacters_.end(); j++) {
if(i == j) continue;
(*i)->collidesWith(*j);
...
}
我寧願不使mCharacters_
載體導入的CollidableObjects
載體,如果我沒有到。但我不確定這是否唯一的方法。
我會嘗試。接下來我不知道,所以非常感謝。 – 2014-12-19 03:47:43
'bool CollidableObject :: collidesWith(const CollidableObject&)'是我的選擇簽名。 – 5gon12eder 2014-12-19 04:05:33
將智能指針更改爲raw使得繼承的方法和成員由於某種原因不可用。任何想法? – 2014-12-19 04:59:37