When you say
enum {RANDOM, IMMEDIATE, SEARCH} strategy;
you create a single instance variable, called 'strategy' of a nameless enum. This is not a very useful thing to do - you need a typedef:
typedef enum {RANDOM, IMMEDIATE, SEARCH} StrategyType;
StrategyType strategy = IMMEDIATE;