An enumeration consists of a set of named integer constants
ClassID не является константой, верно?
Мы можем дать
enum {ID = 0};
Мы также можем дать
enum{ID} // now ID automatically assigned as 0
Мы не можем дать
enum {ID = ClassID};
, поскольку ClassID не являетсяконстанта .. См. это и это ссылка
РЕДАКТИРОВАТЬ: После просмотра комментария
Вместо установки ClassID вфункция макроса, возвращает намеренное значение из макроса и присваивает это значение макросу ClassID в самом файле .. См., как я сделал пример здесь .. Это код C .. но логика препроцессора для цели C аналогична ..
#define max(A,B) ( (A) > (B) ? (A):(B))
#define MYVAL max(2,3)
enum{
FIRSTVALUE = MYVAL,
OTHERTHING
};
void main(){
printf("%d and %d",SOMETHING,OTHERTHING);
return;
}
Надеюсь, это поможет ..