クラス Player と Enemy が継承する Entity ベースクラスがあります。プレイヤーと敵の両方に、次のようなスプライト オブジェクト (SFML API から) が含まれています。
class Player : Entity
{
sf::Sprite sprite
}
プレイヤーと敵は、次のように設定されたベクター内に作成されます。
class EntityManager
{
public:
void CollisionCheck();
private:
std::vector<Entity*> entityVector;
}
私はこの形式の衝突検出機能を使用しようとしています:
bool Collision::CircleTest(const sf::Sprite& Object1, const sf::Sprite& Object2)
だから私はこのようなことをしようとしています:
void EntityManager::ColCheck()
{
if (Collision::CircleTest(entityVector[0].sprite, entityVector[1].sprite))
{
cout << "COLLISION\n";
}
}
しかし、次のコンパイル エラーが発生します。
エラー: メンバー 'sprite' の要求
'((EntityManager*)this)->EntityManager::entityVector.std::vector<_Tp, _Alloc>::operator[] with _Tp = Entity*, _Alloc = std::allocator'、これは非クラス型です「エンティティ*」</p>
ベクター内のこれらのクラスからコリジョン関数にスプライト オブジェクトを渡すにはどうすればよいですか?