Why i can't use method in gameObject.getComponent

Hi everyone, sorry for my English level.

My problems it’s: I can use method in my enemy in there include scripts TakeDamage().

My Player attack class:
`
public class PlayerAttack : MonoBehaviour {

private Animator anim;
private PlayerCharacteristics PlayerCharacteristics;

// Attack
public Transform attackPoint;
public float attackRange = 0.5f;
public LayerMask enemyLayers;

private void Start()
{
    anim = GetComponent<Animator>();
    PlayerCharacteristics = GetComponent<PlayerCharacteristics>();
}

// Attack method
public void Attack()
{
    if (PlayerCharacteristics.startAtkCoolDown == 0)
    {
        PlayerCharacteristics.startAtkCoolDown = PlayerCharacteristics.attackCoolDown;

        // Play an attack animation
        anim.SetTrigger("Attack");

        // Detect enemies in range of attack
        Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(attackPoint.position, attackRange, enemyLayers);

        // Damage enemies
        foreach (Collider2D enemy in hitEnemies)
        {
            enemy.GetComponent<Enemy>().TakeDamage();
            // Enemy mark wrong and It say "Could not find namespace type or name"
        }
    }
}

void OnDrawGizmosSelected()
{
    if (attackPoint != null)
    {
        Gizmos.color = Color.red;
        Gizmos.DrawWireSphere(attackPoint.position, attackRange);
    }
}

}
`

and it’s my enemy class

`
public class Enemy : MonoBehaviour {

// Player health
public float maxHealth;
public float currentHealth;
// Player mana
public float maxMana;
public float currentMana;
// Player data
public int level;
public int strength;

// Attack power
public float attack;

void Start()
{
    // Health
    currentHealth = maxHealth;
    // Mana
    currentMana = maxMana;
    // Attack
    attack = (level + (strength * 3) + 10);
}

public void **TakeDamage**(float damage)
{
    currentHealth -= damage;

    Debug.Log("Damage...");

    if (currentHealth <= 0)
    {
        Die();
    }
}

void Die()
{
    Debug.Log(name + " - enemy died!");
    Destroy(gameObject);
}

}
`

Hello!
It seems that you’re trying to get a component… from a component… you have to get the componen, from the gameobject.

 enemy.gameobject.GetComponent<Enemy>().TakeDamage();

this is caused because the variable you’re pointing at, is a collider and not a gameobject.
Hope this helps

And I forgot to add and am writing now, as maybe it wags.
Player and Enemy script files are located in different folders.