You're confusing Enemy class, focus of performing anything and everything related to that particular enemy with its representation in the Game class.
The Enemy class should know what it means to attack, but it should not care about effects in other classes if it is not a direct effect of the attack. In other words, an Enemy might need to perform some operation on its target, but it wouldn't need to retain state information related to whether or not it has attacked already.
The caller should know this and should keep track of this, and I assume the caller is the Game class itself. If that is the case, then the solution is simple. Your Game class should hold two lists: one with a list of enemies which have not attacked and another with a list of enemies which have. Create a private method in your Game class that performs the "attack" call for a particular enemy. After the call, you remove it from the list of enemies that have not attacked and you add it to the list of enemies that have attacked.
Operations performed on all enemies would simply require two passes, one for each list.
If Game class doesn't call attack of Enemy, then Enemy will have to require a simple event handling system that allows other objects to listen. Game will then subscribe to the attack event of all its enemy instances. When an attack occurs, it will keep track of which enemies have attacked and which have not using the list system mentioned above.
Consider using the event bus pattern to centralize all events in your program if you feel the need to use many events like this. Have an instance which allows a caller to listen or trigger an event by name. Then you create a name "enemy.attacked" to indicate an event specific to an enemy attacking. Similarly you can do the same for other events.
I hope this helps!