enum EPSecODSState {
EPSEC_ODS_RUNNING = 0x0001,
EPSEC_ODS_PAUSED = 0x0002,
EPSEC_ODS_PAUSING = 0x0003,
EPSEC_ODS_FINISHED = 0x0004,
EPSEC_ODS_TERMINATING = 0x0005,
EPSEC_ODS_READY = 0x0006,
} EPSecODSState; // <<== here
Вы определяете переменную с именем EPSecODSState
типа enum EPSecODSState
.Эта переменная скрывает тип EPSecODSState, поэтому вам придется использовать
enum EPSecODSState foobar;
, чтобы определить другую переменную типа EPSecODSState
.Я не думаю, что это было преднамеренно, и что вы, возможно, хотели написать
typedef enum EPSecODSState {
EPSEC_ODS_RUNNING = 0x0001,
EPSEC_ODS_PAUSED = 0x0002,
EPSEC_ODS_PAUSING = 0x0003,
EPSEC_ODS_FINISHED = 0x0004,
EPSEC_ODS_TERMINATING = 0x0005,
EPSEC_ODS_READY = 0x0006,
} EPSecODSState;
, который является регулярно встречающимся шаблоном в C, но ненужным в C ++.При этом, с вашей версией определения enum
вы должны будете написать
struct EPSecODSStat {
//...
enum EPSecODSState state;
//...
};
Когда у вас есть экземпляр EPSecODSStat
, вы можете получить доступ к EPSecODSStat::state
следующим образом:
EPSecODSStat epsecodsstat
epsecodsstat.state = EPSEC_ODS_PAUSING;
как получить доступ к переменным перечисления через указатель структуры.
Если у вас есть указатель на этот экземпляр
EPSecODSStat *odsStat = &epsecodsstat;
, вы можетеполучить к нему доступ с помощью оператора стрелки (->
):
odsStat->state = EPSEC_ODS_PAUSING;
Оператор стрелки является просто синтаксическим сахаром для
(*odsStat).state